gpt4 book ai didi

java - HttpsURLConnection.setDefaultHostnameVerifier 范围

转载 作者:太空宇宙 更新时间:2023-11-03 15:03:24 25 4
gpt4 key购买 nike

当远程服务器证书有问题并且证书 CN 与域名不匹配时,会定期出现问题,我无法影响这一点。要解决这个问题,有一个解决方案 - 创建并设置虚拟主机名 validator (例如 scala 语法):

val hv = new HostnameVerifier() {
def verify(s: String, sslSession: SSLSession) = true
}

如果我可以访问真实连接,我可以为每个连接设置此 validator :

https_connection.setHostnameVerifier(hv)

但是如果我无法直接控制连接,比如使用 wsimport 生成的 SOAP 包装器,我会这样做:

HttpsURLConnection.setDefaultHostnameVerifier(hv)

并将其设置为上课。

问题:如果我有 tomcat webapp,它使用与 HTTPS 连接的类,并且其中之一使用静态方法设置默认 validator ,这个更改影响的范围是什么?

替代问题:如何在 wsimport 生成的 SOAP 网络服务中设置主机名验证程序?

最佳答案

问题可能有点不专业,但我花了一些时间来理解,也许会节省一些人的时间。

Question: if I have tomcat webapp which uses classes connecting with HTTPS and one of them set's default verifier using static method, which is the scope this change affects?

我做了一个小测试,在一个简单的 servlet 中,我在一个请求中设置了 HttpsURLConnection.setDefaultHostnameVerifier(hv),然后在子请求中,我从新的 HttpsURLConnection 对象中读取了 getHostnameVerifier。当然和我第一次请求时设置的是一样的,怎么可能不一样呢。所以范围至少是tomcat webapp的范围。


Alternative question: how to set hostname verifier in wsimport generated SOAP webservices?

使用 JAXWSProperties.HOSTNAME_VERIFIER:

val ws = (new MyJAXWSWebService()).getMyJAXWSWebServiceSoap
val context = ws.asInstanceOf[BindingProvider].getRequestContext

// their certificate doesn't match domain!
context.put(JAXWSProperties.HOSTNAME_VERIFIER, new HostnameVerifier() {
def verify(s: String, sslSession: SSLSession) = true
})

关于java - HttpsURLConnection.setDefaultHostnameVerifier 范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17048151/

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