0

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

服务器端(java):

  1. 将客户端的公钥证书导出到服务器的信任库

客户端(C++):

  1. 加载了从服务器的密钥库中导出的服务器的公共证书
  2. 分别加载了客户端的公钥和私钥(这是因为客户端是用c++写的,所以不能直接使用java key store)

使用的所有证书都是自签名的。

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

SSL_connect: certificate verify failed

我有两个问题:

  1. 我用于 SSL 通信的方法是否正确?如果不是,那么正确的是什么?
  2. 此错误的任何可能原因?

谢谢你。

4

1 回答 1

0

检查是否可以直接验证密钥调用: openssl s_client -connect serverIP:Port 。如果可以的话,您的代码有问题,为此我们将需要有关它的更多详细信息。如果不是...您没有使用证书。服务器正在向您发送,或者证书有问题。

于 2014-05-26T11:39:55.153 回答