Можно ли заставить SSLHandshake всегда использовать имя хоста, а не IP для HttpsUrlConnection - PullRequest
0 голосов
/ 03 июня 2019

Итак, у меня такая ситуация: я пытаюсь загрузить изображение с somedomain.com, используя HTTPS. Домен, вероятно, неправильно настроен, но, к сожалению, я не могу это изменить. Что именно происходит:

Когда я перехожу на https://somedomain.com/animage.jpg, я получаю действительный сертификат, выданный для somedomain.com, который идеально подходит. Но когда я звоню на тот же сайт, используя его IP-адрес, скажем https://123.123.123.123 - я получаю (также действительный) сертификат для * .hostingcompany.com - сертификат хостинговой компании.

Теперь я пытаюсь загрузить содержимое файла, используя Java HttpsUrlConnection, ничего особенного:

var urlConnection = new URL(imageUrl).openConnection();
((HttpURLConnection) urlConnection).getResponseCode();

(я хочу сначала проверить код ответа, но здесь это не важно.)

Этот код запускается внутри Spring Boot App и запускается по запросу. Он отлично работает для первого запроса с момента загрузки приложения. Каждый последующий запрос завершается с java.security.cert.CertificateException: No subject alternative DNS name matching somedomain.com found. Это происходит потому, что при каждом последующем запросе SSL Handshake отправляется на IP, а не на имя хоста, и получает сертификат хостинговой компании.

Я пытался найти разные настройки для классов SSL, но безрезультатно. Я знаю, что есть обходной путь, когда я мог бы предоставить свой HostnameVerifier, который мог бы просто вернуть true, но это не было бы безопасно, поэтому я не хочу этого делать.

Кто-нибудь сталкивался с такой проблемой? Может я ищу не в тех местах? Может быть это что-то с ДНС? Я буду признателен за любую помощь.

1 Ответ

0 голосов
/ 04 июня 2019

Оказывается, это ошибка в Java 11.01. Исправлено с 11.02. После перехода на 11.03. описанное выше поведение исчезло. Каждый запрос получает соответствующий сертификат.

Вот подробности ошибки: https://bugs.openjdk.java.net/browse/JDK-8211806

Надеюсь, это кому-нибудь поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...