문제

SSL을 통한 트래픽을 허용하도록 서버를 설정하려고 합니다.SSL이 Name Virtual Host와 작동하지 않는다는 것을 알고 있지만 전용 개인 IP가 있는 가상 머신에 모든 Apache 서버가 있습니다.적절한 vms로 트래픽을 라우팅하기 위해 mod_proxy 설정이 있는 기본 가상 머신이 있습니다.

그러나 https 트래픽을 라우팅하려면 프록시와 vms에 인증서를 설치해야 합니다.우리는 모든 호스트에서 사용할 수 있는 와일드카드 인증서를 보유하고 있습니다.모든 것이 제대로 작동하는 것처럼 보이지만 프록시에 대한 Apache 로그에는 다음이 표시됩니다.

[경고] 초기화:SSL 서버 IP/포트 충돌:host1.domain.com:443(/etc/apache2/sites-enabled/host1:1) 및host2.domain.com:443 (/etc/apache2/sites-enabled/host2:1)

프록시에 설정한 각 호스트에 대해 이러한 오류 메시지 중 하나가 있습니다.프록시에 대한 가상 호스트 설정은 아래에 게시되어 있습니다.

<VirtualHost ipaddress:443>
    ServerName host1.domain.com
    ProxyPreserveHost On
    ProxyRequests Off
    ProxyPass / https://privateip:443/
    ProxyPassReverse / https://privateip:443/

    SSLProxyEngine on
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/server.crt
    SSLCertificateKeyFile /etc/ssl/private/server.key
</VirtualHost>

이 작업을 수행할 수 있는 방법이 있나요?

도움이 되었습니까?

해결책

Apache가 여러분에게 여러 가지가 있다고 경고하는 것처럼 들립니다. <VirtualHost> 동일한 IP 주소와 포트가있는 섹션 ... 경고없이 작동하는 한 SSL 핸드 셰이크의 일부로 요청 된 호스트 이름을 식별하는 방법 인 SNI (Server Name Delication)와 같은 것을 사용해야한다고 생각합니다. . 기본적으로 SSL을 통해 이름 기반 가상 호스팅을 수행 할 수 있지만 브라우저에서 얼마나 잘 지원되는지 잘 모르겠습니다. SNI와 같은 것 외에는 기본적으로 공개 인터넷에 노출되는 각 IP 주소에 대해 하나의 SSL 지원 도메인 이름으로 제한됩니다.

물론 웹 사이트에 올바르게 액세스 할 수 있다면 경고를 무시하는 것이 좋습니다. 이 특별한 것들은 그다지 심각하지 않습니다 - 그들은 주로 문제를 겪고 있다면 무엇을 살펴볼지 징후입니다.

다른 팁

내가 아는 한, Apache는 버전 2.2.12 이후 SNI를 지원합니다. 슬프게도 문서는 아직 그 변경을 반영하지 않습니다.

가십시오 http://wiki.apache.org/httpd/namebasedsslvhostswithsni 그것이 끝날 때까지

다음을 교체 할 수 있습니다.

VirtualHost ipaddress:443

~와 함께

VirtualHost *:443

당신은 아마도 당신의 모든 미덕 호스트에서 이것을해야 할 것입니다.

아마 그 메시지를 정리할 것입니다. ServerName Directive가 메시지 요청을 라우팅하는 것에 대해 걱정하도록하십시오.

다시 한 번 동일한 컴퓨터에 대한 여러 IP의 별칭이 있으면이 작업을 수행하지 못할 수 있습니다.

가상 호스트는 다음과 같습니다.

NameVirtualHost IP_Address:443

<VirtualHost IP_Address:443>
    SSLEngine on
    SSLCertificateFile /etc/pki/tls/certs/ca.crt    # Where "ca" is the name of the Certificate
    SSLCertificateKeyFile /etc/pki/tls/private/ca.key
    ServerAdmin webmaster@domain_name.com
    DocumentRoot /var/www/html
    ServerName www.domain_name.com
    ErrorLog logs/www.domain_name.com-error_log
    CustomLog logs/www.domain_name.com-access_log common
</VirtualHost>

Apache는 이름 기반 가상 호스트에서는 SSL을 지원하지 않으며 IP 기반 가상 호스트에서만 SSL을 지원합니다.

원천:Apache 2.2 SSL FAQ 질문 이름 기반 가상 호스팅을 사용하여 다양한 SSL 가상 호스트를 식별할 수 없는 이유는 무엇입니까?

SSL과 달리 TLS 사양은 이름 기반 호스트(다른 사람이 언급한 SNI)를 허용하지만 Apache는 아직 이 기능을 지원하지 않습니다.openssl 0.9.8에 대해 컴파일할 때 향후 릴리스에 포함될 것으로 예상됩니다.

또한, mod_gnutls SNI를 지원한다고 주장하지만 실제로 시도해 본 적은 없습니다.

먼저 구성 파일에서 NameVirtualHost IP : 443이 필요합니다! 당신은 아마도 결국 80이있는 것을 가지고 있지만, 443이있는 것도 필요합니다.

둘째, *. 도메인 인증서 (와일드 카드)가 필요합니다 (하나를 만들 수 있음).

셋째, 하나의 IP로 도메인 웹 (인증서 때문에)을 만들 수 있습니다.

활성화하려면 아래 부분을 추가해야합니다 NameVirtualHost 주어진 IP의 기능.

NameVirtualHost IP_Address:443
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top