成功SSL通信的要求 我使用节俭来编写一个C++客户端,它将安全地调用java(用Java编写的服务器)(使用相同的节省文件生成服务器和客户端的代码)。我是SSL通信的新手。对于java服务器端,我将客户机的公钥证书导入服务器信任库(server truststore.jks),以验证客户机的真实性。我从服务器端密钥库(server.jks)导出了公共证书,并在客户端使用它在SSL握手期间对服务器密钥证书进行身份验证。如果我列出了我为SSL通信所做的工作:

成功SSL通信的要求 我使用节俭来编写一个C++客户端,它将安全地调用java(用Java编写的服务器)(使用相同的节省文件生成服务器和客户端的代码)。我是SSL通信的新手。对于java服务器端,我将客户机的公钥证书导入服务器信任库(server truststore.jks),以验证客户机的真实性。我从服务器端密钥库(server.jks)导出了公共证书,并在客户端使用它在SSL握手期间对服务器密钥证书进行身份验证。如果我列出了我为SSL通信所做的工作:,c++,ssl,client-server,thrift,C++,Ssl,Client Server,Thrift,服务器端(java): 已将客户端的公钥证书导出到服务器的信任库 Cleint端(C++): 已加载从服务器的密钥库导出的服务器的公共证书 分别加载客户端的公钥和私钥(这是因为我不能直接使用java密钥存储,因为客户端是用c++编写的) 使用的所有证书都是自签名的 到目前为止,我一直没有成功,并且不断地出现以下错误: SSL_connect: certificate verify failed 我有两个问题: 我用于SSL通信的方法正确吗?如果不是,正确的方法是什么 这个错误有什么可能的原因吗

服务器端(java):

  • 已将客户端的公钥证书导出到服务器的信任库
  • Cleint端(C++):

  • 已加载从服务器的密钥库导出的服务器的公共证书
  • 分别加载客户端的公钥和私钥(这是因为我不能直接使用java密钥存储,因为客户端是用c++编写的)
  • 使用的所有证书都是自签名的

    到目前为止,我一直没有成功,并且不断地出现以下错误:

    SSL_connect: certificate verify failed
    
    我有两个问题:

  • 我用于SSL通信的方法正确吗?如果不是,正确的方法是什么
  • 这个错误有什么可能的原因吗

  • 谢谢。

    检查是否可以验证直接调用的密钥:openssl s_客户端-连接服务器IP:端口。 若可以的话,这是您的代码的问题,为此我们需要更多的细节。
    如果不是。。。您没有使用证书。服务器正在发送您,或者证书有问题。

    您在C++侧使用的SSL中使用的库/ API。证书验证失败是因为他是自签名的。如果您不担心有效性,请禁用验证。@古里多:谢谢您的回答。我禁用了验证作为临时解决方法。