Как исправить имя хоста в сертификате не совпадает - PullRequest
0 голосов
/ 20 декабря 2018

Я делаю HTTP-запрос на веб-сайт https, используя Unirest для Java, но у меня проблема с сертификатом SSL.Сообщение об исключении - javax.net.ssl.SSLException: имя хоста в сертификате не соответствует:

Страница: www.ceskereality.cz

Если я открою его в браузере (я использую GoogleChrome на 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 ]

0 голосов
/ 20 декабря 2018

Сервер требует, чтобы клиент использовал Индикация имени сервера (SNI) для получения правильного сертификата.Если SNI не используется, возвращается сертификат для ci.cz вместо ceskereality.cz, что приводит к появившейся ошибке.

Я не знаком с Unirest, но вполне вероятно, что используемая вами библиотека не поддерживает SNI или вы используете ее со старой версией Java, в которой не включен SNI.

0 голосов
/ 20 декабря 2018

Загрузите сертификат сервера и поместите его в свои каталоги и перезапустите Java-приложение.

...