首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >默认的X509TrustManager和通配符主机名验证?

默认的X509TrustManager和通配符主机名验证?
EN

Stack Overflow用户
提问于 2022-09-26 14:20:44
回答 1查看 38关注 0票数 1

我正在构建一个用于主机名验证的默认X509TrustManager:

代码语言:javascript
复制
        TrustManagerFactory trustManagerFactory = null;
    try {
        trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
        trustManagerFactory.init((KeyStore) null);
        TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();

        for (int i = 0; i < trustManagers.length; i++) {
            TrustManager t = trustManagers[i];
            if (t instanceof X509TrustManager) {
                this.defaultTrustManager = (X509TrustManager) t;
                return;
            }
        }
    } catch (NoSuchAlgorithmException | KeyStoreException e) {
        throw new CelleryCellSTSException("Error while setting trust manager", e);
    }

但是,我在任何地方都找不到它是否也支持通配符证书,还是只需要为此构建一个自定义信任管理器?这里是否有任何可用的文档,我想了解更多的通配符验证是如何工作的,如果它支持的话?我使用的是java 8和11,谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-09-26 22:40:30

在Java7中,TrustManager由TrustManagerFactory创建的主机名检查是否(并且只有在)为正在进行的特定连接(更确切地说是SSLSocketSSLEngine)设置了“端点标识”算法时,请参见为套筒而来为发动机而来支持的算法HTTPS和LDAPS实际上是实现这里 ( HTTPS内部称为TLS),您可以看到句柄有效通配符(仅在DNS名称中,而不是IP地址),但拒绝无效通配符。

HttpsURLConnection和11 up java.net.http.HttpClient使用'HTTPS‘算法。对于调用JSSE的其他方式,如果您想要调用JSSE,您的代码或相关中间件都必须设置端点id。

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

https://stackoverflow.com/questions/73855531

复制
相关文章

相似问题

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