Java Apache HttpClient正在将域解析为IP地址,但证书不匹配
在使用ApacheHttpComponents HttpClient库(4.0.2)时,我遇到了一个问题,证书没有得到正确验证。该证书对域名(我们称之为example.com)有效,但它将根据IP地址进行验证: 证书中的主机名不匹配:= 我建立连接的代码是:Java Apache HttpClient正在将域解析为IP地址,但证书不匹配,java,httpclient,apache-httpcomponents,Java,Httpclient,Apache Httpcomponents,在使用ApacheHttpComponents HttpClient库(4.0.2)时,我遇到了一个问题,证书没有得到正确验证。该证书对域名(我们称之为example.com)有效,但它将根据IP地址进行验证: 证书中的主机名不匹配:= 我建立连接的代码是: HttpParams httpParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpParams, 5000);
HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, 5000);
HttpConnectionParams.setSoTimeout(httpParams, 5000);
DefaultHttpClient httpClient = new DefaultHttpClient(httpParams);
String url = "https://www.example.com";
HttpGet get = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(get);
String response = EntityUtils.toString(httpResponse.getEntity()).trim();
通过web浏览器连接时,证书本身显示为有效,并且对我要连接的域名有效:
CN=*.example.com
证书还添加到Java密钥库(使用常规的HttpsURLConnection
测试)
你知道为什么这段代码使用IP地址而不是域名吗?似乎是HttpClient 4.0.2的一个已知错误- 该错误表明存在以下任何一种情况:
- 升级至4.0.3或更新版本
- 降级至4.0.1
- 使用AllowlHostNameVerifier