首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >X509TrustManager checkServerTrusted与TLSv1.3

X509TrustManager checkServerTrusted与TLSv1.3
EN

Stack Overflow用户
提问于 2022-05-18 01:46:23
回答 1查看 279关注 0票数 1

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

代码语言:javascript
复制
void checkServerTrusted(X509Certificate[] chain,
                      String authType)
                        throws CertificateException

authType - the key exchange algorithm used

文档中提到它使用了一个authType参数,它指定了所使用的密钥交换算法。这对于TLS1.2来说是有意义的,因为密钥交换算法可以从选定的密码中计算出来。但是在没有密钥交换算法的情况下,authType值应该是什么呢?用这种方法使用TLS1.3如何验证证书?我使用的是openJDK 8。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-18 07:18:21

这是“未知”。注实际证书-路径验证和名称检查与较低协议相同;不指定1.3服务器使用包含密钥和(潜在) KeyUsage的证书,该证书与低协议中的密钥交换相匹配,仅仅是一个签名--并且与客户端提供的signature_algorithms值匹配--并且JSSE客户端提供了全部,至少假设一个j7提供程序是可用的,这在j7 up中通常是这样的。(只有指定的服务器证书才匹配sigalgs和keyexchange。)

默认验证器(即当您使用TrustManagerFactory时)实际上根本不检查这个值,尽管当它存在时,它确实对sigalgs应用了一个约束。 (i.e.in 1.2或1.3)。TLS规范不要求客户端检查这一点,甚至不要求1.3,这通常需要比早期版本更多的接收器检查(即antiPostelianism)。(默认的X509ExtendedKeyManager确实使用类似的keyTypes参数。)

PS:您的意思是您正在调用标准(X509)TM来验证证书吗?如果是这样的话,您不需要;JSSE已经这样做了。或者您的意思是您提供您自己的类来调用implements X509TrustManager?如果是这样的话,您应该知道在7 up中(正如您所链接的那样),JSSE将添加“端点标识”,即在适用于提供的X509TM的情况下进行主机名检查。如果您想自己控制这一点,则必须将extends X509ExtendedTrustManager作为链接到链接的页面顶部。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72282382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档