2

我正在使用 TLS 1.3 设置相互身份验证,使用 spring boot 服务器和 curl 客户端进行测试。我的信任库包含两个正确加载的证书链 - 事实上,相互身份验证在此测试设置中有效。

但是,基于RFC8446规范,我试图CertificateRequest在 SSL 握手中获取消息以包含 certificate_authorities扩展名。

日志 ( -Djavax.net.debug=all) 显示来自服务器的证书请求消息,没有certificate_authorities.

javax.net.ssl|DEBUG|13|https-jsse-nio-8443-exec-2|2020-02-17 14:24:15.419 CET|CertificateRequest.java:864|Produced CertificateRequest message (
"CertificateRequest": {
  "certificate_request_context": "",
  "extensions": [
    "signature_algorithms (13)": {
      "signature schemes": [ecdsa_secp256r1_sha256, ecdsa_secp384r1_sha384, ecdsa_secp521r1_sha512, rsa_pss_rsae_sha256, rsa_pss_rsae_sha384, rsa_pss_rsae_sha512, rsa_pss_pss_sha256, rsa_pss_pss_sha384, rsa_pss_pss_sha512, rsa_pkcs1_sha256, rsa_pkcs1_sha384, rsa_pkcs1_sha512, ecdsa_sha1, rsa_pkcs1_sha1]
    },
    "signature_algorithms_cert (50)": {
      "signature schemes": [ecdsa_secp256r1_sha256, ecdsa_secp384r1_sha384, ecdsa_secp521r1_sha512, rsa_pss_rsae_sha256, rsa_pss_rsae_sha384, rsa_pss_rsae_sha512, rsa_pss_pss_sha256, rsa_pss_pss_sha384, rsa_pss_pss_sha512, rsa_pkcs1_sha256, rsa_pkcs1_sha384, rsa_pkcs1_sha512, ecdsa_sha1, rsa_pkcs1_sha1]
    }
  ]
}
)

这个扩展是可选的CertificateRequest,但我想把它包含在这个消息中,以便真正的客户端设备能够根据这个向服务器发送正确的证书。

4

1 回答 1

0

在研究这个问题时,我遇到了JDK-8206925,它指出

当前的 TLS 1.3 实现不支持此功能 [...]

所以显然它只是 java 的一个开放问题(或者至少是我使用的 openJDK java)。

不过我很高兴被证明是错误的..

于 2020-02-17T15:43:37.277 回答