Когда я иду в: http://web-sniffer.net/ и проверьте заголовки моего сайта (https://www.example.org), Я получаю код состояния 200
Но когда я использую радиокнопку HTTP / 1.0 (без заголовка Host), я получаю код состояния 400 (неверный запрос).
В моем журнале apache указано: «Имя хоста www.example.org предоставлено через SNI, но в HTTP-запросе не указано hostnmae»
Я читал, что для работы мне нужно отключить директиву «SSLStrictSNIVHostCheck» в моем файле conf 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 webmaster@example.org
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>
Насколько я могу судить, глядя на Исходный код Apache, ты не можешь сделать это с любой Вариант конфигурации Apache. Вы ДОЛЖЕН отправить заголовок Host: соответствующий тому, что было отправлено через SNI, чтобы Apache принял его.
RFC 6066 раздел 11.1 указывает, что веб-серверы ДОЛЖЕН убедитесь, что заголовок Host: и имя хоста, отправленное через SNI, совпадают.
На практике любое программное обеспечение, говорящее по протоколу HTTP, которое было создано за последние 15 лет или около того, должно отправлять заголовок Host: с каждым запросом. Если у вас действительно есть что-то, чего нет, либо оно слишком древнее, чтобы все еще было в Интернете, либо оно сломано.
Похоже, этот тест (сайт) не работает. Если вы используете HTTP / 1.0 без заголовка хоста, маловероятно, что вы когда-либо отправляли расширение SNI. Я не думаю, что вам нужно «исправлять» свой сайт, чтобы поддерживать это.