#spring-boot #ssl #project-reactor #spring-boot-2
Вопрос:
Проверка имени хоста полезна, когда клиент SSL подключается к серверу приложений на удаленном хосте. Это гарантирует, что имя хоста в URL-адресе, к которому пытается подключиться клиент, совпадает с именем хоста в цифровом сертификате, который сервер отправляет обратно в рамках SSL-подтверждения. Проверка имени хоста выполняется только SSL-клиентом.
ERROR — TargetHandler I/O error: Host name verification failed for host : 72.20.5.110
javax.net.ssl.SSLException: Host name verification failed for host : <host-name> at org.apache.synapse.transport.http.conn.ClientSSLSetupHandler.verify(ClientSSLSetupHandler.java:152) at org.apache.http.nio.reactor.ssl.SSLIOSession.doHandshake(SSLIOSession.java:285)
Как WebClient проверяет имя хоста сервера по умолчанию и как мы можем это отключить?
Комментарии:
1. Имя хоста не проверяется на соответствие «записи CN в сертификате». Он проверяется только на соответствие записям с альтернативным именем субъекта в сертификате.
2. @AndrewHenle По ссылке, которую вы мне дали» DNS-имена: обычно это также указывается в качестве общего имени RDN в поле темы основного сертификата».
3. И какое отношение содержание общего имени имеет к тому, используется ли CN при проверке имени хоста или нет? Прочитайте авторство : «… вполне допустимо, чтобы поле темы было пустым, если сертификат содержит расширение с альтернативным именем субъекта («Имя субъекта»), которое включает по крайней мере одну запись имени субъекта …»
4. Использование общего имени для проверки было запрещено RFC 2818 по крайней мере 21 год назад: «Если присутствует расширение имени субъекта типа dNSName, оно ДОЛЖНО использоваться в качестве удостоверения. В противном случае НЕОБХОДИМО использовать поле (наиболее конкретное) Общее имя в поле Тема сертификата. Хотя использование общего имени является существующей практикой, оно устарело , и центрам сертификации рекомендуется использовать вместо него имя dNSName».
5. RFC 5425 (наряду с RFC 2818, как указано выше) требует игнорировать CN, если присутствует запись DNS с альтернативным именем субъекта , а требования форума браузера CA гласят, что сертификаты должны иметь по крайней мере одну запись DNS SAN , поэтому CN фактически не имеет значения при проверке имени хоста сервера. Если в ваших сертификатах нет надлежащих записей DNS в качестве альтернативных имен субъектов, они не пройдут проверку имени хоста.