ssl 忽略主机验证
javax.net.ssl.SSLException: Certificate for <103.xx.xx.xx> doesn't match common name of the certificate subject: *.xx.com.cn
可以:
SSLConnectionSocketFactory sslf = new SSLConnectionSocketFactory(sslcontext, new String[] { "TLSv1" },null, SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
in httpcliet4.3.3 :
SSLConnectionSocketFactory sslsf =newSSLConnectionSocketFactory(sslContext,SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);CloseableHttpClient httpclient =HttpClients.custom().setSSLSocketFactory(sslsf).build();
参考:
https://stackoverflow.com/questions/7256955/java-sslexception-hostname-in-certificate-didnt-match
相关推荐
这个实例主要涉及如何配置HttpClient来忽略SSL(Secure Socket Layer)验证,这对于在开发和测试环境中处理自签名证书或未认证的服务器非常有用。以下将详细介绍HttpClient的使用以及如何进行SSL验证的忽略。 首先...
3.配置 HostnameVerifier,以忽略主机名验证: ```java public static HostnameVerifier getHostnameVerifier() { HostnameVerifier hostnameVerifier = new HostnameVerifier() { @Override public boolean ...
// 创建忽略主机名验证的hostnameVerifier HostnameVerifier hostnameVerifier = NoopHostnameVerifier.INSTANCE; // 创建一个忽略SSL校验的SSLConnectionSocketFactory SSLConnectionSocketFactory ...
2. **禁用SSL验证**:在某些测试或调试场景下,可能需要临时禁用SSL验证,但这并不推荐在生产环境中使用,因为会降低安全性。 3. **配置SSLContext**:通过`SSLContext`对象,我们可以设置自定义的`TrustManager`和`...
// 忽略主机名验证 return HttpClients.custom() .setSSLSocketFactory(sslSocketFactory) .build(); } } ``` 在`HttpUtil.java`这个文件中,我们可能看到了类似上述代码的实现。`createUnsafeHttpClient()`...
这里,`encrypt=true` 指定使用SSL加密,`trustServerCertificate=true` 表示信任服务器证书,不进行验证。`hostNameInCertificate` 是服务器证书中的主机名,如果你的证书不是由受信任的CA签发的,这一步尤为重要。...
3. **主机名验证**:除了证书验证外,还需要检查SSL连接的目标主机名是否与证书中的主题匹配。这可以通过重写DefaultHostnameVerifier或使用自定义的HostnameVerifier来实现。 4. **安全上下文**:创建一个带有...
TrustManager用于检查证书链的有效性,而HostnameVerifier则确保服务器的证书主题与预期的主机名匹配。通过重写这两个接口,开发者可以实现灵活的证书策略。 总之,HTTPS通信证书验证和绕过是网络开发中的核心问题...
1. **启用SSL**:在curl_easy_setopt中设置CURLOPT_SSL_VERIFYPEER和CURLOPT_SSL_VERIFYHOST选项,分别控制是否验证服务器证书和主机名。 2. **提供CA证书**:如果服务器使用的是自签名证书或者不在默认的CA根证书...
当跳过HTTPS的SSL验证时,Android应用会忽略服务器的证书验证,允许与任何服务器建立连接,无论其证书是否有效或是否由可信任的CA签发。这可能导致以下风险: 1. **数据泄露**:由于没有加密,通信内容可能被第三方...
开发者还可以通过自定义网络请求库或者使用`NSURLSession`的配置来实现更细粒度的证书验证控制,例如忽略某些特定的验证错误。 在实际开发中,如果遇到自签名证书或者企业内部证书的情况,可能需要在代码中添加特殊...
在涉及到HTTPS通信时,"curl" 可以通过添加 `-k` 或 `--insecure` 参数来忽略SSL证书验证,这对于调试和测试自签名证书的服务器非常有用。不过,这在生产环境中应该避免,因为这将削弱安全性。 总结一下,本话题...
1. **禁用证书验证**:在Java代码中,可以通过设置`HttpsURLConnection`的`setHostnameVerifier`方法来忽略主机名验证,或者设置`SSLContext`并使用自定义的`TrustManager`。 2. **安全风险**:不验证服务器证书会...
忽略SSL验证** 如果上述方法不可行,还可以选择禁用SSL验证。但请注意,这会降低安全性,只建议在测试环境中使用。可以使用以下命令临时禁用SSL验证: ```bash pip install --no-check-certificate ``` 或者在`...
2. **自定义域名验证**:默认的OkHttpClient会进行标准的主机名验证,但有时我们需要自定义验证规则。可以通过实现HostnameVerifier接口来自定义这一过程。 3. **配置SSLContext**:SSLContext用于管理密钥和证书,...
标题中的“WebService绕过https证书认证方法”是指在使用Java进行Web服务调用时,如何在忽略HTTPS证书验证的情况下访问Web服务。这通常用于开发和测试环境,因为在这些环境中,可能使用自签名证书或者未被公共信任的...
2. **自定义主机名验证器**:`TrustAnyHostnameVerifier`实现了`HostnameVerifier`接口,用于验证连接到的主机名与服务器证书中的主机名是否匹配。在这里我们也选择信任所有主机名。 3. **建立SSL上下文**:通过`...
.hostnameVerifier((hostname, session) -> true) // 忽略主机名验证 .build(); ``` 4. 使用OkHttpClient发起请求: ```java Request request = new Request.Builder() .url("https://your-self-signed-url")...
然后我们使用这个TrustManager初始化SSLContext,并创建了一个允许所有主机名验证的SSLSocketFactory。 接下来,我们需要编写一个类来利用HttpClient发送POST请求。这个类可以接收参数,如URL、请求头和请求体,...