gpt4 book ai didi

java - 在 SSL 握手中,如果服务器发送带有空 'Cert Authorities' 列表的 CertificateRequest,我们能否让客户端发送证书

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:08:59 26 4
gpt4 key购买 nike

我目前正在使用 Java 开发 SSL 客户端,需要与需要客户端身份验证的第三方服务器建立 https 连接。服务器人员给了我一个受信任的根 CA 证书,用于签署客户端和服务器证书。我已将此证书放在我这边的信任库中。服务器人员也有他们用来验证客户端证书的根 CA 证书。

当我尝试与服务器建立 SSL 连接时,我看到当服务器发送证书时握手正常,并且我的客户端能够成功验证它。但作为“证书请求”消息的一部分,服务器不会在“证书颁发机构”参数中返回任何根 CA 证书。因此,我的客户端不会将客户端证书发送回服务器并且握手失败。

我正在使用 WSDL stub 编写标准 Java 代码。我正在利用 wsdl2Java ant 任务生成的 wsdl stub 。

所以我的问题是:即使服务器在请求客户端身份验证时发送了一个空的“证书颁发机构”列表,我是否可以让我的 java 客户端将预先设置的客户端证书发送回服务器。 (我阅读了 TLS RFC,我发现服务器发送这样的空列表是合法的,在这种情况下,客户端可以发回它认为合适的任何证书。我正在尝试实现完全相同的行为)。

最佳答案

很抱歉回复这个古老的帖子,但我无法抗拒。

我已经看到这种握手工作得很好:

根据 javax.net.debug=all

*** CertificateRequest
Cert Types: RSA, DSS, ECDSA
Supported Signature Algorithms: SHA512withRSA, Unknown (hash:0x6, signature:0x2), SHA512withECDSA, SHA384withRSA, Unknown (hash:0x5, signature:0x2), SHA384withECDSA, SHA256withRSA, Unknown (hash:0x4, signature:0x2), SHA256withECDSA, SHA224withRSA, Unknown (hash:0x3, signature:0x2), SHA224withECDSA, SHA1withRSA, SHA1withDSA, SHA1withECDSA
Cert Authorities:
<Empty>
*** ServerHelloDone
matching alias: our_client_cert_alias
*** Certificate chain
chain [0] = [
[
Version: V3
Subject: CN=

但这可能取决于您的 HTTP 客户端库及其处理 SSL/TLS(重新)协商的方式。这是使用 Java 8 和 http://spray.io/documentation/1.2.4/spray-client/

关于java - 在 SSL 握手中,如果服务器发送带有空 'Cert Authorities' 列表的 CertificateRequest,我们能否让客户端发送证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16801547/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com