CSockt不适用于OpenSSL Ssl_connect失败

时间:2018-10-26 05:59:01

标签: visual-studio-2010 visual-c++ mfc openssl asyncsocket

我想将CSocket与OpenSsl一起使用。 SSL_connect失败。出现SSL_ERROR_WANT_READ错误。

我正在连接,因此Linux SSL套接字与MFC套接字。只有SSL_connect失败。

下面添加了示例代码:

if(this->Create() == FALSE)
{
    return false;
}

if(this->Connect(hostip.c_str(),port) == FALSE)
{
    return false;
}
pSslCtx = SSL_CTX_new(SSLv23_method());

if (SSL_CTX_load_verify_locations(pSslCtx,strSslFile, NULL) != 1)
{
    return false;
}
if (SSL_CTX_set_default_verify_paths(pSslCtx) != 1)
{
    return false;
}
pSSLConn          = SSL_new(pSslCtx);
if(!pSSLConn)
    return false;

SSL_set_fd(pSSLConn, this->m_hSocket);

pBIOConn = BIO_new_socket(this->m_hSocket, BIO_NOCLOSE);

SSL_set_bio(pSSLConn, pBIOConn, pBIOConn);

SSL_set_connect_state(pSSLConn);
if (SSL_connect(pSSLConn) <= 0)
{
    return false;
}

1 个答案:

答案 0 :(得分:-1)

这是正确的:

SOCKET q = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
BIO *u7 = BIO_new_socket(q, BIO_NOCLOSE);
connect(q, (sockaddr*)&server, sizeof(server));
SSL_set_bio(cSSL, u7, u7);
SSL_connect(cSSL);

https://github.com/alexeyneu/BlockZero/blob/b8eec009208cbef5d644a1026678cb1f09e1a19b/trew/trew/trew.cpp#L81
而且我看不到真正的ssl方法,密码或证书。