Cuando voy a:http://web-sniffer.net/y verifique los encabezados de mi sitio (https://www.ejemplo.org), obtengo un código de estado 200
Pero cuando uso el botón de opción HTTP/1.0 (sin encabezado Host), obtengo un código de estado 400 (Solicitud incorrecta).
Mi registro de Apache dice "Nombre de host www.example.org proporcionado a través de SNI, pero no se proporcionó ningún nombre de host en la solicitud HTTP"
Leí que para que funcione necesito desactivar la directiva "SSLStrictSNIVHostCheck" en mi archivo de configuración de Apache.
Agregué esta directiva, pero sigo recibiendo el código de estado 400 al crear un HTTP/1.0 (sin encabezado de host)
Como referencia, este es mi archivo 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 es mi archivo SSL predeterminado:
<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>
Respuesta1
Por lo que puedo decir al mirar elcódigo fuente de apache, no puedes hacer eso concualquierOpción de configuración de Apache. TúDEBEenvíe un encabezado Host: que coincida con lo que se envió a través de SNI para que Apache lo acepte.
RFC 6066 sección 11.1especifica que los servidores webDEBEcompruebe que el encabezado Host: y el nombre de host enviados a través de SNI coincidan.
Como cuestión práctica, cualquier software que hable HTTP que se haya producido en los últimos 15 años aproximadamente debería enviar el encabezado Host: con cada solicitud. Si realmente tienes algo que no lo es, es que es demasiado antiguo para seguir en Internet o está roto.
Respuesta2
Parece que esta prueba (sitio) no funciona. Si utiliza HTTP/1.0 sin encabezado de host, es poco probable que alguna vez haya enviado una extensión SNI. No creo que necesites "arreglar" tu sitio para admitir esto.