java - TLS 客户端身份验证 |加州Sectigo | java

标签 java ssl

我昨天使用 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 上打开时签名证书的样子:

enter image description here

我有以下问题:

1) 在 Windows 上打开时,证书链会显示在证书中,但在 KeyStore Explorer 上不会显示。有谁知道为什么吗?

2) 根据上面给出的日志,USERTrust 根 CA 似乎已导入 SAP 的信任存储中。在上图中,虽然根证书被报告为 Sectigo,这恰好是一个友好的名称,但其颁发者名称与导入到 SAP 信任存储中的名称一致:

enter image description here

因此,我不确定为什么 java 在 TLS 握手期间不会将此证书呈现给 SAP。请问有什么想法吗?

3) 中间证书有一个名为“权威信息访问”的属性,其中存在指向其根的链接。该根的属性与我在上面第 2 项图片中看到的根的属性完全不同。这有关系吗?

enter image description here

enter image description here

任何帮助将不胜感激。谢谢。

最佳答案

问题已解决。这是由于我将 CA Reply 导入到我的私钥中的原因。我只导入了签名的实体证书,但看起来我必须以 PEM 格式导入。感谢布鲁诺解释了该决议HERE 。我放心了!

关于java - TLS 客户端身份验证 |加州Sectigo | java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61819600/

相关文章:

java - 无法访问帐号

c# - WSDoAllReceiver : Incoming message does not contain required Security header

java - 如何为 Java JTree 设计外观,使其看起来像用于 xml 文档?

java - 从另一个 Activity 返回时数组列表保持为空

ssl - 我如何通过关闭SHA256,SHA384,SHA,MD5,AES 128/128恢复RDP连接到Windows Server 2012 R2(驻留在AWS上)?

iis - 仅在 Google Chrome 中存在 SSL 问题

java - 在 spring boot 中启用 ssl 的最佳实践是什么?

java - 如何使用子字符串从 bufferedreader 中提取文本

Apache2 SSL "Action '启动'失败”apache错误日志可能有更多信息

ios - CFNetwork SSLHandshake 在 iOS 8.1 中失败 (-9805)