При использовании библиотеки Apache HttpComponents HttpClient (4.0.2) у меня возникает проблема, связанная с неправильной проверкой сертификата. Сертификат действителен для доменного имени (назовем его example.com), но вместо этого он проверяется по IP-адресу:
имя хоста в сертификате не совпадает: <123.123.123.123>! =
<*. Example.com>
Мой код для подключения:
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();
Сам сертификат отображается как действительный при подключении через веб-браузер и действителен для доменного имени, к которому я подключаюсь:
CN = * .example.com
Сертификат также добавляется в хранилище ключей Java (проверяется с использованием обычного HttpsURLConnection
).
Есть идеи, почему этот код использует IP-адрес вместо имени домена?