Как исправить имя хоста в сертификате не совпадает
Я делаю HTTP-запрос на веб-сайт https, используя Unirest для Java, но у меня проблема с сертификатом SSL. Сообщение об исключении - javax.net.ssl.SSLException: имя хоста в сертификате не совпадает:
Страница: www.ceskereality.cz
Если я открою его в браузере (я использую Google Chrome в Windows 10), он будет работать...
Я пробовал это, но это не работает
SSLContext sslcontext = SSLContexts.custom()
.loadTrustMaterial(null, new TrustSelfSignedStrategy())
.build();
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext,SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
CloseableHttpClient httpclient = HttpClients.custom()
.setSSLSocketFactory(sslsf)
.build();
Unirest.setHttpClient(httpclient);
2 ответа
Сервер требует, чтобы клиент использовал указание имени сервера (SNI) для получения правильного сертификата. Если SNI не используется, сертификат для ci.cz
вместо ceskereality.cz
возвращается, что вызывает ошибку, которую вы видите.
Я не знаком с Unirest, но вполне вероятно, что используемая вами библиотека не поддерживает SNI или вы используете ее со старой версией Java, в которой не включен SNI.
Загрузите сертификат сервера и поместите его в свои каталоги и перезапустите Java-приложение.