SSL 지원 Apache 호스트의 SSL이 아닌 버전이 다른 호스트의 콘텐츠를 제공하는 이유는 무엇입니까?

SSL 지원 Apache 호스트의 SSL이 아닌 버전이 다른 호스트의 콘텐츠를 제공하는 이유는 무엇입니까?

Apache/Ubuntu를 사용하여 localhost에서 실행되는 두 개의 웹 사이트가 있습니다.

securesite.local방금 이 중 하나에 대해 자체 서명된 인증서를 성공적으로 설치했습니다 . 이름을 . SSL이 아닌 또 다른 사이트 insecuresite.local도 예상대로 작동합니다.

즉, 다음으로 이동하면

https://securesite.local
http://insecuresite.local

이들 각각은 올바른 콘텐츠를 제공합니다.

하지만 다음으로 이동하면 http://securesite.local다음의 콘텐츠가 제공됩니다.insecure.local

내 /etc/hosts에는 다음이 포함됩니다.

127.0.1.1 securesite.local
127.0.1.1 insecuresite.local

/etc/apache2/apache2.conf에는 다음이 포함됩니다.

IncludeOptional sites-enabled/*.conf

securesite 또는 insecuresite에 대한 명시적인 참조는 포함되어 있지 않습니다.

ls /etc/apache2/sites-enabled

securesite.conf insecuresite.conf

insecuresite.conf에는 (여기서 축약됨) 포함되어 있습니다.

<VirtualHost insecuresite.local:80>
    ServerName insecuresite.local
    ServerAlias insecuresite.local
    # ...

securesite.conf에는 (여기서 축약됨) 포함되어 있습니다.

<VirtualHost securesite.local:443>
    ServerName securesite.local
    ServerAlias securesite.local
    # ...

나는 Apache가 443 이외의 포트를 통한 securesite.local에 대한 연결을 거부하고 해당 localhost:80에서 트래픽을 허용하는 다른 사이트의 콘텐츠 제공으로 돌아가지 않기를 원합니다.

왜 이런 일이 발생하며 어떻게 중지할 수 있나요?

답변1

insecuresite.conf 및 securesite.conf 파일을 기반으로 하나는 포트 80에서 수신 대기 중이고 다른 하나는 443에서 수신 대기 중입니다.http://securesite.local, 귀하의 브라우저는 포트 80에서 데이터를 요청하고 있으며 포트 80에서 제공되는 유일한 것은 insecuresite.local입니다.

이 문제를 해결하려면 securesite.local:80에 대한 가상 호스트를 정의하고 이를 https로 리디렉션해야 합니다. 또한 NameVirtualHost *apache2.conf 파일에 이 있는지 확인해야 합니다 .

두 개의 conf 파일은 다음과 같습니다.

<VirtualHost *:80>
    ServerName insecuresite.local
    ServerAlias insecuresite.local
    # ...

그리고

<VirtualHost *:80>
    ServerName securesite.local
    ServerAlias securesite.local
    Redirect permanent / https://securesite.local
    # ... 
<VirtualHost *:443>
    ServerName securesite.local
    ServerAlias securesite.local
    # ...

NameVirtualHost 옵션이 활성화되면 Apache는 ServerNames 및 ServerAliases를 검사하고 그에 따라 데이터를 제공합니다.

답변2

소켓은 다음에 바인딩되고 연결됩니다.호스트 이름이 아닌 IP 주소.두 가상호스트 모두 동일한 IP 주소를 갖고 있기 때문에 둘 다에 대해 단 하나의 리스너 소켓만 있으며 Apache는 어느 도메인이 요청될지 알 수 없습니다.~ 후에연결을 수락했습니다. HTTP 요청(또는 TLS SNI 핸드셰이크)을 수신해야 합니다.

파일은 sites-enabledasciibetical 순서로 읽혀지므로 이름이 지정된 파일에 "대체" 가상 호스트를 설정할 수 있습니다 sites-enabled/00-default.conf. (즉, 동일한 IP에 대해 다른 가상 호스트보다 먼저 나열됩니다.)

관련 정보