Wenn ich gehe:http://web-sniffer.net/und überprüfen Sie die Header meiner Site (https://www.example.org), erhalte ich den Statuscode 200
Wenn ich jedoch das Optionsfeld HTTP/1.0 (ohne Host-Header) verwende, erhalte ich den Statuscode 400 (Ungültige Anforderung).
In meinem Apache-Protokoll steht „Hostname www.example.org über SNI bereitgestellt, aber kein Hostname in der HTTP-Anforderung angegeben“
Ich habe gelesen, dass ich die Direktive „SSLStrictSNIVHostCheck“ in meiner Apache-Konfigurationsdatei deaktivieren muss, damit es funktioniert.
Ich habe diese Anweisung hinzugefügt, erhalte aber immer noch den Statuscode 400, wenn ich ein HTTP/1.0 erstelle (ohne Host-Header).
Als Referenz ist dies meine ports.conf-Datei:
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>
Dies ist meine Standard-SSL-Datei:
<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>
Antwort1
Soweit ich das beurteilen kann,Apache-Quellcode, das geht nicht mitbeliebigApache-Konfigurationsoption. SieMUSSSenden Sie einen Host: Header, der mit dem über SNI gesendeten übereinstimmt, damit Apache ihn akzeptiert.
RFC 6066 Abschnitt 11.1gibt an, dass WebserverMUSSÜberprüfen Sie, ob der Host: Header und der über SNI gesendete Hostname übereinstimmen.
Praktisch gesehen sollte jede Software, die HTTP spricht und in den letzten 15 Jahren oder so entwickelt wurde, bei jeder Anfrage den Host:-Header senden. Wenn Sie tatsächlich etwas haben, das dies nicht tut, ist es entweder zu alt, um noch im Internet zu sein, oder es ist defekt.
Antwort2
Klingt, als ob dieser Test (diese Site) kaputt ist. Wenn Sie HTTP/1.0 ohne Hostheader verwenden, ist es unwahrscheinlich, dass Sie jemals eine SNI-Erweiterung gesendet haben. Ich glaube nicht, dass Sie Ihre Site „reparieren“ müssen, um dies zu unterstützen.