Я пытаюсь достичь того, что несколько лет назад было проблемой из-за пропуска настроенных серверов, что вызывало
«предупреждение о подтверждении установления связи: unrecognized_name»
, когда клиент с поддержкой SNI (для Java 1. value = hostname]
например, этот вопрос заключался в том, как этого избежать:
Моя версия 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 станет исключением во время рукопожатия
. 1.8) получит это предупреждение, и рукопожатие не удастся, но когда я здесь приземлился, этого не произошло. Я уже потратил довольно много времени, пытаясь понять это, но похоже, что это выходит за рамки моих знаний о сетях и Linux.
Между прочим, я запускаю apache на своей машине разработки, поэтому порт 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 и несколько версий назад. Подробнее по следующей ссылке.