Quando eu for para:http://web-sniffer.net/e verifique os cabeçalhos do meu site (https://www.example.org), recebo um código de status 200
Mas quando uso o botão de opção HTTP/1.0 (sem cabeçalho Host), recebo um código de status 400 (Solicitação incorreta).
Meu log do Apache diz "Nome do host www.example.org fornecido via SNI, mas nenhum hostnmae fornecido na solicitação HTTP"
Eu li que para fazer funcionar preciso desligar a diretiva "SSLStrictSNIVHostCheck" no meu arquivo conf do Apache.
Eu adicionei esta diretiva, mas ainda estou recebendo o código de status 400 ao fazer um HTTP/1.0 (sem Host Header)
Para referência, este é meu arquivo 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>
Este é meu arquivo SSL padrão:
<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>
Responder1
Pelo que posso dizer olhando para oCódigo-fonte do Apache, você não pode fazer isso comqualquerOpção de configuração do Apache. VocêDEVEenvie um cabeçalho Host: correspondente ao que foi enviado via SNI para o Apache aceitá-lo.
RFC 6066 seção 11.1especifica que os servidores webDEVEverifique se o cabeçalho Host: e o nome do host enviados via SNI correspondem.
Na prática, qualquer software que fale HTTP produzido nos últimos 15 anos ou mais deveria enviar o cabeçalho Host: com cada solicitação. Se você realmente tem algo que não é, é muito antigo para ainda estar na Internet ou está quebrado.
Responder2
Parece que este teste (site) está quebrado. Se você usar HTTP/1.0 sem cabeçalho de host, é improvável que você tenha enviado uma extensão SNI. Não acho que você precise "consertar" seu site para oferecer suporte a isso.