SSL错误证书错误

0 java ssl ssl-certificate

我无法使用Java程序连接到安全站点。我已经从要连接的服务器导入了3个证书;公共,内部和根证书。我已经将3个证书正确导入到java cacerts中。并且在调用Java类时还指定了以下参数:

java -Djavax.net.debug=ssl
Djavax.net.ssl.keystore=JAVACACERTS -Djavax.net.ssl.keystorePassword=changeit -server -cp $CLASSPTH -Xmx500m SendOrderResponse
Run Code Online (Sandbox Code Playgroud)

但是,我收到“ bad_certificate”错误。我查看了日志的详细信息,似乎根证书不在证书链中。

知道为什么会发生吗?当我在Java cacert中导入了3个证书时?我认为由于证书链错误而抛出了错误的证书。

Bru*_*der 5

我建议您运行:

openssl s_client -connect remoteserver:443
Run Code Online (Sandbox Code Playgroud)

假设远程服务器需要或请求客户端证书身份验证,它应该向您发送可接受的CA列表。

您应该发送最终由这些CA之一签名的证书。ssl规范不需要您发送CA,但是您应该将证书和完整的中间链发送到该CA。我的经验是,两个CA证书看起来可能非常相似。在这方面,移至2048位没有帮助。再确认一次。

附带说明,您的客户收到了错误的证书警报。问题在于客户端发送的证书,而不是服务器证书的验证。

(编辑)我是否提到您发送的证书必须有效?特别是,

  • 未到期的结束日期和合理的开始日期
  • 一个与您要连接的计算机的公共DNS服务器名称匹配的CN:服务器可能正在客户端IP上执行反向DNS查找,并将其与已发送证书的CN进行匹配。