gpt4 book ai didi

java - X509TrustManager checkServerTrusted with TLSv1.3

转载 作者:行者123 更新时间:2023-12-04 22:39:34 24 4
gpt4 key购买 nike

我正在用 java 制作一个 TLS 客户端并使用 x509TrustManager checkServerTrusted验证服务器证书是否可信的方法。

void checkServerTrusted(X509Certificate[] chain,
String authType)
throws CertificateException
authType - the key exchange algorithm used文档提到它使用 authType 参数,该参数指定使用的 key 交换算法。这对 TLS1.2 来说是有意义的,因为可以从所选密码中找出 key 交换算法。但是TLS1.3没有 key 交换算法的情况下,authType的值应该是多少呢?使用此方法使用 TLS1.3 时如何验证证书?我正在使用 openJDK 8。

最佳答案

It's "UNKNOWN".注意实际的证书路径验证和名称检查与较低的协议(protocol)相同; 1.3 未指定服务器使用包含 key 和(可能)与较低协议(protocol)中的 key 交换匹配的 KeyUsage 的证书,只是一个具有签名能力并与客户端提供的 signature_algorithms 值之一匹配的证书——并且 JSSE 客户端提供所有,至少假设有一个 EC 提供程序可用,这在 j7 up 中通常是这种情况。 (仅限 1.2,指定服务器证书以匹配 sigalgs 和 keyexchange。)
AFAICS 默认 validator (即当您使用 TrustManagerFactory 时)实际上根本不检查此值,尽管 it does apply a constraint for sigalgs when present (即在 1.2 或 1.3 中)。 TLS 规范不要求客户端检查这一点,甚至 1.3 也不需要,它通常比早期版本需要更多的接收器检查(即反Postelianism)。 (OTOH 默认的 X509[Extended]KeyManager 确实使用了类似的 keyType[s] 参数。)
PS:您的意思是您正在调用标准(X509)TM 来验证证书吗?如果是这样,您不需要; JSSE 已经做到了。或者你的意思是你提供你自己的类implements X509TrustManager被称为?如果是这样,您应该知道在 7 中(如您所链接的)JSSE 将添加“端点识别”,即在适用于提供的 X509TM 的情况下检查主机名。如果你想自己控制,你必须改为 extends X509ExtendedTrustManager在您链接的页面顶部链接。

关于java - X509TrustManager checkServerTrusted with TLSv1.3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72282382/

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