Netty 世界中 .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE) 的等价物是什么?
What is the equivalent of .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE) in Netty world?
一个关于Netty和io.netty.handler.ssl.SslContext
的小问题
在Tomcat和org.apache.http.ssl.SSLContexts
中,我们有可能执行以下操作:
HttpClient httpClient = HttpClients.custom()
.setSSLContext(SSLContexts.custom()
.loadKeyMaterial(someKeystorePropertlyInitialized)
.loadTrustMaterial(someTruststorePropertlyInitialized)
。建造())
.setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE)
.build();
(感谢我们是否可以保留字体而不用代码块包裹)
例如,这可以修复由以下原因引起的问题:java.security.cert.CertificateException:找不到与 xxx 匹配的主题备用 DNS 名称
(这个问题不是关于 NoopHostnameVerifier.INSTANCE
是否是解决这个问题的正确方法。)
我的问题是,.setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE)
、without .trustManager(InsecureTrustManagerFactory.INSTANCE)
在Netty中的等价物是什么,因为我有一个真正的信任库,我只想跳过主机名,而不是所有内容
也许有 reactor.netty.http.client.HttpClient; HttpClient.create()
的东西?
实际上,Netty 已默认关闭主机名验证 - 请参阅 reactor-netty 的 github 上的 this issue. It looks like the library you're using (reactor-netty) might have it turned on. There appears to be a similar issue,其中指出了解决方案,但提供的代码片段似乎可以超过必要的。本质上,您只需要从 SslHandler
访问 SSLEngine
并确保端点识别算法是 empty/null:
HttpClient.create().secure(
ssl -> ssl.sslContext(sslContext)
.handlerConfigurator(handler-> {
SSLEngine engine = handler.engine();
SSLParameters params = new SSLParameters();
// ... set other SSL params
params.setEndpointIdentificationAlgorithm(null);
})
);
一个关于Netty和io.netty.handler.ssl.SslContext
在Tomcat和org.apache.http.ssl.SSLContexts
中,我们有可能执行以下操作:
HttpClient httpClient = HttpClients.custom() .setSSLContext(SSLContexts.custom() .loadKeyMaterial(someKeystorePropertlyInitialized) .loadTrustMaterial(someTruststorePropertlyInitialized) 。建造()) .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE) .build();
(感谢我们是否可以保留字体而不用代码块包裹)
例如,这可以修复由以下原因引起的问题:java.security.cert.CertificateException:找不到与 xxx 匹配的主题备用 DNS 名称
(这个问题不是关于 NoopHostnameVerifier.INSTANCE
是否是解决这个问题的正确方法。)
我的问题是,.setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE)
、without .trustManager(InsecureTrustManagerFactory.INSTANCE)
在Netty中的等价物是什么,因为我有一个真正的信任库,我只想跳过主机名,而不是所有内容
也许有 reactor.netty.http.client.HttpClient; HttpClient.create()
的东西?
实际上,Netty 已默认关闭主机名验证 - 请参阅 reactor-netty 的 github 上的 this issue. It looks like the library you're using (reactor-netty) might have it turned on. There appears to be a similar issue,其中指出了解决方案,但提供的代码片段似乎可以超过必要的。本质上,您只需要从 SslHandler
访问 SSLEngine
并确保端点识别算法是 empty/null:
HttpClient.create().secure(
ssl -> ssl.sslContext(sslContext)
.handlerConfigurator(handler-> {
SSLEngine engine = handler.engine();
SSLParameters params = new SSLParameters();
// ... set other SSL params
params.setEndpointIdentificationAlgorithm(null);
})
);