2012-10-15 24 views
0

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

服务器端(JAVA):

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

Cleint端(C++):

  1. 加载这是从服务器的密钥库导出服务器的公钥证书
  2. 分别加载客户端的公钥和私钥(这是因为我不能直接使用java密钥存储,因为客户端是用C++编写的)

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

到目前为止,我没有成功,不断得到了以下错误:

SSL_connect: certificate verify failed 

我有两个问题:

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

谢谢。

+0

你在C++上使用SSL的库/ api? – gureedo

+0

另外,证书验证失败,因为他是自签名的。如果您不担心有效性,请禁用验证。 – gureedo

+0

@ gureedo:谢谢你的回答。我暂时禁用了验证作为临时解决方法。 – Izza

回答

0

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