아파치에서 SNI를 끌 수 없습니다

아파치에서 SNI를 끌 수 없습니다

내가 갈 때 :http://web-sniffer.net/내 사이트의 헤더를 확인하세요(https://www.example.org), 상태 코드 200이 표시됩니다.

그러나 라디오 버튼 HTTP/1.0(호스트 헤더 없음)을 사용하면 상태 코드 400(잘못된 요청)이 표시됩니다.

내 아파치 로그에 "SNI를 통해 제공되는 호스트 이름 www.example.org가 있지만 HTTP 요청에는 호스트 이름이 제공되지 않습니다."라고 표시됩니다.

작동하게 하려면 Apache conf 파일에서 "SSLStrictSNIVHostCheck" 지시어를 꺼야 한다는 내용을 읽었습니다.

이 지시문을 추가했지만 HTTP/1.0(호스트 헤더 없이)을 만들 때 여전히 상태 코드 400이 표시됩니다.

참고로 이것은 내 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 [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>

답변1

내가 보기에 알 수 있는 한은아파치 소스 코드, 당신은 그렇게 할 수 없습니다어느Apache 구성 옵션. 너해야 하다Apache용 SNI를 통해 전송된 것과 일치하는 Host: 헤더를 보내 이를 수락합니다.

RFC 6066 섹션 11.1해당 웹 서버를 지정합니다.해야 하다Host: 헤더와 SNI를 통해 전송된 호스트 이름이 일치하는지 확인하세요.

실제로 지난 15년 동안 생산된 HTTP를 사용하는 모든 소프트웨어는 모든 요청과 함께 Host: 헤더를 보내야 합니다. 실제로 존재하지 않는 것이 있다면 아직 인터넷에 있기에는 너무 오래되었거나 고장난 것입니다.

답변2

이 테스트(사이트)가 손상된 것 같습니다. 호스트 헤더 없이 HTTP/1.0을 사용하는 경우 SNI 확장을 보낸 적이 없을 가능성이 높습니다. 나는 이것을 지원하기 위해 사이트를 "수정"할 필요가 없다고 생각합니다.

관련 정보