当前位置: 首页 > 知识库问答 >
问题:

在SSL/TLS握手中的“Server-Hello”消息期间选择证书链的逻辑?

郭华美
2023-03-14

在客户机-服务器ssl握手中,我的服务器以server-hello消息的形式将证书链发送回客户机。但我想了解如何选择特定的证书链。

我的钥匙店有5条链子

chain1>
privatekey (expired at let's say date1) --
intermediate or server cert (valid) --
root (valid)

chain2>
privatekey cert (valid for 6 more months)--
intermediate or server cert (valid)--
root (valid)

chain3>
privatekey cert (expired at lets say date2) --
intermediate or server cert (valid)--
root (valid)

chain4>
privatekey cert (valid for 1 year) --
intermediate or server cert (valid)--
root (valid)

chain5>
privatekey cert (expired at lets say date3) --
intermediate or server cert (valid)--
root (valid)

现在,每当客户机试图连接到我的服务器(对于webservice)时,就会出现以下异常,客户机无法连接

Sun.security.validator.validatoreXception:PKIX路径验证失败:java.security.cert.certPathValidatoreXception:时间戳检查失败。…………………………。更多的线..由java.security.cert.certPathValidatoreXception:时间戳检查失败..........更多的线..由java.security.cert.certPathValidatoreXception:NotAfter:date1引起

尝试重新连接,但这次在date2中再次出现相同的错误。现在,即使在我的密钥库中有过期的证书时,这种情况也不会发生。

有人能解释如何在服务器hello消息中选择证书链吗?我试着研究了很多,但找不到具体的东西

共有1个答案

席俊达
2023-03-14

这不是“不可能回答”,与你在评论中被告知的相反。

  1. 选择满足客户端在ClientHello消息中提供的签名者、密码套件和协议的证书。
  2. 如果有选择的话,如果您安装了keymanager,则由其控制:否则,JSSE由其控制,不进一步指定。
 类似资料:
  • 在我的应用程序中,我需要实现双向握手。以下是我使用的代码: 我有一个PEM文件,我必须从中生成密钥库。 服务器证书是本地存储的. pk12证书。 问题在于握手过程中未附加客户端证书。我使用wireshark分析数据包,它显示客户端证书长度为0。 如果我使用. pk12文件作为客户端证书,它被正确地附加。但是我必须使用PEM文件。任何解决方案!!

  • 在SSL握手期间,当客户机中启用SNI扩展时,服务器不会选择并向客户机返回所需的证书。 我有一个证书链,我已经导入到服务器上JVM的密钥库中。 由内部中间颁发CA颁发的服务器证书。 内部根CA颁发的中间证书。 自签名根CA证书。 我使用“OpenSSL s_client”进行测试。 我不知道在SSL握手过程中证书选择在服务器上是如何工作的。

  • 我使用Open Liberty创建了一个Docker映像,并使用我的自定义应用程序作为Web应用程序服务托管在Azure中。一切正常,除非我尝试访问Azure上托管的另一个控制器(https://mycontrollerurl.azurewebsites.net/....)我确实从日志中看到一个错误:- [错误]CWPKI0022E:SSL握手失败:SubjectDN CN=*.azurewebs

  • 我不知道我到底需要在哪里包含客户机证书。现在,我的第一个问题是我不信任服务器。我尝试使用默认的Java密钥库文件(cacerts),其中包含Thawte和Digicert,这些是我试图与之通信的服务器的根权限。我使用

  • 如何强制客户端发送证书链的所有节点? 谢谢

  • 问题内容: 我正在尝试连接到安全的Web服务。 即使我的密钥库和信任库已正确设置,我也遇到了握手故障。 经过几天的挫败,无休止的谷歌搜索并询问周围的所有人,我发现唯一的问题是java选择在握手期间不将客户端证书发送到服务器。 特别: 服务器请求了客户端证书(CN = RootCA)-即“给我一个由根CA签名的证书” Java查看密钥库,只发现我的客户端证书由“ SubCA”签名,该证书又由“ Ro