특정 가상 호스트에 대한 https 액세스를 비활성화하는 방법은 무엇입니까?


10

좋아, 그래서 다음 지시문으로 Apache 서버를 설정했습니다.

NameVirtualHost *:80

<VirtualHost *:80>  
ServerName example1.com  
ServerAlias www.example1.com  
DocumentRoot /var/www/html
</VirtualHost>

<VirtualHost *:80>
ServerName example2.com
ServerAlias *.example2.com
DocumentRoot /var/www/example2
</VirtualHost>

<VirtualHost example1.com:443>
DocumentRoot /var/www/html
ServerName example1.com:443
SSLEngine on
...
</VirtualHosts>

따라서 example1.com은 SSL을 지원하며 http://example1.com 또는 https://example1.com을 통해 액세스 할 수 있습니다. 그러나 브라우저에서 https://example2.com을 방문하면 https://example1.com이 표시되는 의도하지 않은 부작용이 있습니다. 내가하고 싶은 것은 기본적으로 https://example2.com을 비활성화하거나 http://example2.com으로 리디렉션하여 방문 할 때 경고와 잘못된 사이트가 표시되지 않도록하는 것입니다.

답변:


7

example1과 example2가 다른 IP 주소에 있거나 두 이름을 모두 포함하는 SSL 인증서를받지 않으면 경고가 표시되지 않습니다. SSL 연결이 설정 될 때까지 오류 페이지 나 리디렉션이 발생할 수 없습니다.

즉,이 라인을 따라 무언가가 작동해야합니다.

NameVirtualHost *:443
<VirtualHost *:443>
  ServerName example1.com
  SSLEngine on
  #...
</VirtualHost>
<VirtualHost *:443>
  ServerName example2.com
  SSLEngine on
  # same certificate config here as on example1, unless you're wanting to use TLS SNI
  # then, let's redirect the user to non-SSL
  Redirect permanent / http://example2.com/
</VirtualHost>

감사! 필자는 NameVirtualHost 지시문이 누락되었다고 생각하고 Apache는 두 개의 가상 호스트가 서로 충돌하도록하려고한다고 생각했습니다. 흥미롭게도 Chrome은이 리디렉션에 대해 경고를 표시하지 않습니다. 그러나 걱정하지 않아도됩니다. SSL 도메인이 다른 도메인 이름으로 표시되는 것을 원하지 않습니다.
nearengine

비 SSL로 폴백하기 위해 유효하지 않은 인증서를 추가하는 것과 같지 않습니까? vhost 지시문의 인증서 이름에 _fake를 직접 추가 할 수 있다고 생각합니다.
m3nda

0

ServerName example1.com에 : 443을 넣어야한다고 생각하지 않습니다.

이들은 올바르게 구성해야합니다

<VirtualHost example1.com:443> //change example1.com to ip address is a good habit
DocumentRoot /var/www/html
ServerName example1.com
SSLEngine on
...
</VirtualHosts>

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.