无法在基于Java的服务器上使用OpenSSL 我试图编写一个C++应用程序,它可以与基于java的服务器安全通信。我用C++中的OpenSSL来用java建立SSL上下文。在C++中,上下文设置失败,错误“意外消息”。这发生在握手过程中。OpenSSL似乎不理解从Java服务器收到的消息。看看OpenSSL代码,它似乎得到了“应用程序数据”类型的数据,这在握手过程中是不可能的。即使启用了OpenSSL提供的所有解决方案选项,也会出现此问题

无法在基于Java的服务器上使用OpenSSL 我试图编写一个C++应用程序,它可以与基于java的服务器安全通信。我用C++中的OpenSSL来用java建立SSL上下文。在C++中,上下文设置失败,错误“意外消息”。这发生在握手过程中。OpenSSL似乎不理解从Java服务器收到的消息。看看OpenSSL代码,它似乎得到了“应用程序数据”类型的数据,这在握手过程中是不可能的。即使启用了OpenSSL提供的所有解决方案选项,也会出现此问题,c++,openssl,C++,Openssl,我已经看到多个用户在这个论坛上发布了类似的问题,我尝试了这里建议的解决方案。但他们似乎都帮不了我。有人知道这里会出什么问题吗 注意java客户端能够用java服务器建立SSL上下文,它只是C++客户端无法建立上下文。 谢谢 苏布拉曼尼亚 下面是我的代码。 我提到的一个帖子是 下面是我的代码的样子 SSL_CTX * ssl_ctx; SSL_METHOD * meth; SSL * ssl; ...........

我已经看到多个用户在这个论坛上发布了类似的问题,我尝试了这里建议的解决方案。但他们似乎都帮不了我。有人知道这里会出什么问题吗

注意java客户端能够用java服务器建立SSL上下文,它只是C++客户端无法建立上下文。 谢谢 苏布拉曼尼亚

下面是我的代码。 我提到的一个帖子是

下面是我的代码的样子

SSL_CTX              * ssl_ctx;
SSL_METHOD           * meth;
SSL                  * ssl;
............. more declarations

meth     = TLSv1_client_method ();
ssl_ctx  = SSL_CTX_new (meth);

// Enable different workarounds in OpenSSL, which (as per OpenSSL spec) are harmless
ctx_options = SSL_OP_ALL;
ctx_options &= ~SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG;
SSL_CTX_set_options(ssl_ctx, ctx_options);

ssl = SSL_new (ssl_ctx);       
if (ssl == NULL) {
    return false;
}

SSL_set_fd (ssl, connection_get_socket (connection));

tls_set_common_data (connection, ssl, ssl_ctx);

SSL_set_verify(ssl, SSL_VERIFY_PEER, NULL);

while (1) {
    int retCode = SSL_connect (ssl);
    if (retCode == 1)
        break;

    /* get ssl error */
    ssl_error = SSL_get_error (ssl, -1);

    switch (ssl_error) {
    case SSL_ERROR_WANT_READ:
        break;
    case SSL_ERROR_WANT_WRITE:
        break;
    case SSL_ERROR_SYSCALL:
        log (LEVEL_CRITICAL, "syscall error while doing TLS handshake, ssl error (code:%d)",
                ssl_error);

        errdetail = ERR_get_error();
        ERR_error_string_n(errdetail, error_buffer, sizeof(error_buffer));

        log(LEVEL_CRITICAL, "Error during SSL_Connect: %s", error_buffer);

        return false;
    default:
        return false;
    }
}

请发布您的客户代码或其相关部分,以便我们能够了解问题所在。还可以添加您尝试过的解决方案的引用