【问题标题】:CSockt Doesn't work with OpenSSL Ssl_connect FailsCSockt 不适用于 OpenSSL Ssl_connect 失败
【发布时间】:2018-10-26 05:59:01
【问题描述】:

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

我正在使用 MFC 套接字连接 Linux SSL 套接字。只有 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;
}

【问题讨论】:

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


    【解决方案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 方法、密码和证书。

    【讨论】:

    • 我没有在上面添加密码和/或证书代码...我正在使用 MFC 的 CSocket 类。不是正常的套接字连接。
    猜你喜欢
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多