Назад | Перейти на главную страницу

Конфигурация Apache SNI для отправки оповещения о рукопожатии: unrecognized_name

Я пытаюсь достичь того, что несколько лет назад было проблемой из-за пропуска настроенных серверов, что вызвало

"оповещение о рукопожатии: unrecognized_name"

когда клиент с поддержкой SNI (для клиентов Java 1.7 или выше) отправляет во время рукопожатия

Расширение server_name, server_name: [type = host_name (0), value = hostname]

например, этот вопрос заключался в том, как этого избежать:

https://stackoverflow.com/questions/7615645/ssl-handshake-alert-unrecognized-name-error-since-upgrade-to-java-1-7-0.

Моя версия apache - 2.4.33 на Ubuntu 16.04. а файл конфигурации, который я использую, выглядит так:

<IfModule ssl_module>
Listen 8095
</IfModule>

<IfModule mod_gnutls.c>
Listen 8095
</IfModule>

ServerName localhost

<IfModule mod_ssl.c>
        <VirtualHost _default_:8095>
                        ServerName value.that.does.not.match.the.cn.in.certificate
                        ServerAlias value.that.does.not.match.the.cn.in.certificate
                        DocumentRoot /var/www/html

                        SSLEngine on
                        SSLCertificateFile /path_to_certificates/selfsigned.cert
                        SSLCertificateKeyFile /path_to_certificates/selfsigned.key
                        SSLVerifyClient none
                        SSLVerifyDepth 10
        </VirtualHost>
</IfModule>

Я провел небольшое исследование и использовал следующую команду, чтобы проверить, включен ли SNI для имени хоста, которое я предоставляю через apache:

openssl s_client -servername hostanametocheck -tlsextdebug -connect hostanametocheck:8095 2>/dev/null | grep "server name"

для чего результат:

TLS server extension "server name" (id=0), len=0

который из того, что я прочитал, является индикатором того, что apache отправляет это расширение во время рукопожатия, что в случае клиентов Java> 1.7 будет в конечном итоге как исключение во время рукопожатия.

Я ожидал, что мой Java-клиент (1.8) получит это предупреждение и рукопожатие не будет выполнено, но когда я здесь приземлился, этого не произошло. Я уже потратил довольно много времени, пытаясь понять это, но похоже, что это выходит за рамки моих знаний о сетях и Linux.

Кстати, я запускаю apache на своей машине dev, поэтому порт 8095 вместо 443. Я сопоставил имя хоста с localhost. SNI включен на стороне клиента, как я вижу в журналах рукопожатий, что расширение отправлено

Extension server_name, server_name: [type=host_name (0), value=hostname.that.does.not.match.cn.in.certificate.com]

Ваша помощь будет очень признательна!

Я успешно вызвал ошибку с Apache 2.2.22 (но с какой-то старой версией, не исправленной), поскольку похоже, что они начали удалять это предупреждение из отправки, начиная с 2.4.1 и некоторых версий назад. Подробнее по следующей ссылке.

https://bz.apache.org/bugzilla/show_bug.cgi?id=56241