我昨天使用 KeyStore Explorer 生成了一个由 Sectigo [以前称为 Comodo] 签名的私钥对。目标是在 SSL 相互身份验证场景中使用它。我使用 iWay,这是一个 Java 应用程序,它将消息发布到 SAP 的 CPI(云服务)。 CPI 上的服务启用了客户端身份验证[特定于资源,而不是主机:端口]。我使用我们的私钥创建了一个 keystore ,并创建了一个包含一些公共(public)证书的信任库。为了响应失败的通信,我在应用程序上启用了 SSL 调试,以下是我的发现:
*** ServerHelloDone
Warning: no suitable certificate found - continuing without client authentication
*** Certificate chain
<Empty>
***
这是在验证并接受服务器证书的阶段报告的。为了确保相关 key 是否生效,我验证了日志并注意到以下内容,这确保了它确实[出于安全原因更改了 key 名称]:
found key for : self_***.com_priv
我还在日志中验证了 SAP 接受由有效 CA 签名的证书,如下所示:
Cert Authorities:
...
<CN=USERTrust RSA Certification Authority, O=The USERTRUST Network, L=Jersey City, ST=New Jersey, C=US>
...
这是在 Windows 上打开时签名证书的样子:
我有以下问题:
1) 在 Windows 上打开时,证书链会显示在证书中,但在 KeyStore Explorer 上不会显示。有谁知道为什么吗?
2) 根据上面给出的日志,USERTrust 根 CA 似乎已导入 SAP 的信任存储中。在上图中,虽然根证书被报告为 Sectigo,这恰好是一个友好的名称,但其颁发者名称与导入到 SAP 信任存储中的名称一致:
因此,我不确定为什么 java 在 TLS 握手期间不会将此证书呈现给 SAP。请问有什么想法吗?
3) 中间证书有一个名为“权威信息访问”的属性,其中存在指向其根的链接。该根的属性与我在上面第 2 项图片中看到的根的属性完全不同。这有关系吗?
任何帮助将不胜感激。谢谢。
最佳答案
问题已解决。这是由于我将 CA Reply 导入到我的私钥中的原因。我只导入了签名的实体证书,但看起来我必须以 PEM 格式导入。感谢布鲁诺解释了该决议HERE 。我放心了!
关于java - TLS 客户端身份验证 |加州Sectigo | java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61819600/