java - Weblogic/Java 未在与 IIS 的相互 SSL 集成中发送客户端证书
问题描述
我无法理解为什么 Weblogic/Java 没有在 SSL 握手期间通过 CertificateRequest 消息发送服务器(IIS 服务器)请求的客户端证书。
我已经检查并尝试了 SO 中的所有其他问题/答案,例如: Java 没有为相互 SSL 提供客户端证书? 和类似的。
我创建了一个名为 Identity.jks 的自定义密钥库,其中只有一个证书条目,并且我遵循了 WL 指南(以及我在 Internet 上可以找到的所有其他内容)来进行正确的设置。
以下是 SSL 握手的调试日志:
*** CertificateRequest
Cert Types: RSA, DSS, ECDSA
Supported Signature Algorithms: SHA512withRSA, SHA512withECDSA, SHA256withRSA, SHA384withRSA, SHA1withRSA, SHA256withECDSA, SHA384withECDSA, SHA1withECDSA, SHA1withDSA
Cert Authorities:
<Empty>
*** ServerHelloDone
Warning: no suitable certificate found - continuing without client authentication
*** Certificate chain
<Empty>
如您所见,服务器发送了一条CertificateRequest
消息,但由于某些原因Cert Authorities
是Empty
. 在这种情况下,客户端(Weblogic)不发送证书。如您所见,开发人员发出警告消息:
no suitable certificate found - continuing without client authentication
当我使用SoapUI
而不是 Weblogic 与服务器通信时,握手成功。SoapUI 发送包含在Identity.jks
密钥库中的证书。
是否可以SoapUI
减少限制并发送密钥库中存在的唯一证书,而 Weblogic 期望从服务器中找到某些内容Cert Authorities:
<Empty>
?
由于我已将 weblogic 设置为仅使用具有该别名的密钥,因此我希望它能够发送它...
任何人都知道 Weblogic 使用什么标准来查找匹配的客户端证书?
我对日志的解释是否正确?
欢迎任何想法/帮助。
解决方案
我在使用 Java HTTP 客户端时遇到了类似的问题。根据您的 IIS 版本,服务器可能会或可能不会发回证书列表。较新的版本没有。
确保您在密钥库中拥有完整的证书链和客户端证书。
推荐阅读
- laravel - PDOException 错误 - 无法连接到数据库
- nginx - 使用 Haproxy 或 Nginx 反向代理 OpenVpn
- phpmyadmin - 尝试使用 XAMPP 连接到 SID 时出现 localhost 错误
- r - R 编码,我正在尝试将数据框中的变量从 1 到 13 正确排序,但它类似于 201501、2015010、011,012,013、02...09
- angular-service-worker - 如何查询 PWA 离线状态以通知用户
- android - Android Studio“app”模块目录在打开时不断出现折叠
- java - MS Edge/Selenium 选项
- excel - 如果另一列包含特定文本,则查找列的最后一个条目
- arrays - 如何获取数组中的前 15 个出现并使用每个值从 mysql 数据库中获取数据?
- c# - 有没有办法在c#中的进程ID和名称之上找到一个进程