SNI kann auf Apache nicht ausgeschaltet werden

SNI kann auf Apache nicht ausgeschaltet werden

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.

verwandte Informationen