Невозможно отключить SNI на Apache

Невозможно отключить SNI на Apache

Когда я иду:http://web-sniffer.net/и проверьте заголовки моего сайта (https://www.example.org), я получаю код статуса 200

Но когда я использую переключатель HTTP/1.0 (без заголовка Host), я получаю код состояния 400 (неверный запрос).

В моем журнале Apache указано: «Имя хоста www.example.org предоставлено через SNI, но в HTTP-запросе не указано hostnmae».

Я прочитал, что для того, чтобы это заработало, мне нужно отключить директиву «SSLStrictSNIVHostCheck» в моем файле конфигурации Apache.

Я добавил эту директиву, но все еще получаю код состояния 400 при создании HTTP/1.0 (без заголовка хоста)

Для справки, вот мой файл ports.conf:

ServerName www.example.org

NameVirtualHost *:80
Listen 10.0.0.1:80

<IfModule mod_ssl.c>
    # If you add NameVirtualHost *:443 here, you will also have to change
    # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
    # to <VirtualHost *:443>
    # Server Name Indication for SSL named virtual hosts is currently not
    # supported by MSIE on Windows XP.
    Listen 443
    NameVirtualHost *:443
    SSLStrictSNIVHostCheck off
</IfModule>

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

Это мой файл ssl по умолчанию:

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName www.example.org
    ServerAdmin [email protected]
    SSLStrictSNIVHostCheck off


    Alias /static /home/ubuntu/public_html/static
    <Directory /home/ubuntu/public_html/static>
        Order deny,allow
        Allow from all
</Directory>

Alias /media /home/ubuntu/public_html/media
<Directory /home/ubuntu/public_html/media >
        Order deny,allow
        Allow from all
</Directory>

WSGIScriptAlias / /home/ubuntu/public_html/apache.wsgi

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

#   SSL Engine Switch:
#   Enable/Disable SSL for this virtual host.
SSLEngine on

SSLProtocol all -SSLv2
SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM

SSLCertificateFile /etc/ssl/crt/example_org.crt
SSLCertificateKeyFile /etc/ssl/crt/server.key
SSLCertificateChainFile /etc/ssl/crt/ca.crt
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
    SSLOptions +StdEnvVars
</Directory>

BrowserMatch "MSIE [2-6]" \
    nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
</IfModule>

решение1

Насколько я могу судить, глядя наИсходный код Apache, вы не можете сделать это слюбойВариант конфигурации Apache. ВыДОЛЖЕНотправьте заголовок Host:, соответствующий тому, что было отправлено через SNI, чтобы Apache принял его.

RFC 6066 раздел 11.1указывает, что веб-серверыДОЛЖЕНпроверьте, совпадают ли заголовок Host: и имя хоста, отправленное через SNI.

С практической точки зрения, любое программное обеспечение, говорящее по HTTP, которое было создано за последние 15 лет или около того, должно отправлять заголовок Host: с каждым запросом. Если у вас действительно есть что-то, чего нет, оно либо слишком старое, чтобы все еще быть в Интернете, либо сломано.

решение2

Похоже, этот тест (сайт) сломан. Если вы используете HTTP/1.0 без заголовка хоста, то вряд ли вы когда-либо отправляли расширение SNI. Я не думаю, что вам нужно «исправлять» свой сайт, чтобы поддерживать это.

Связанный контент