SSL 용 포트 번호

포트 80에 HTTP가 있고 포트 443에 HTTPS가있는 기존 웹 사이트가 있습니다. 이제 여기에 두 번째 사이트를 추가하겠습니다. 내가 이해 한 바에 따르면 동일한 SSL 포트에서 두 사이트를 호스팅 할 수 없습니다.

제 질문은 두 번째 사이트에서 SSL 포트로 사용하기에 적합한 포트 번호 범위입니다.

p>

댓글

  • 내가 틀렸을 수 있지만 유효한 SSL 인증은 포트 443에 있어야한다고 믿습니다. 이것이 공유 호스팅이 전용 SSL을 구매할 때의 IP 주소입니다.하지만 …. 이것은 내 분야가 아니기 때문에 다른 괴짜 사람이 확인할 수 있기를 바랍니다.

답변

실제로 포트 443에서 여러 SSL 사이트를 호스팅 할 수 있습니다. 아파치 구성 파일의 다음 코드가 트릭을 수행합니다.

그렇지 않으면 원하는 포트를 사용할 수 있습니다. 단점은 사용자는 URL에 포트 번호를 포함해야합니다 (예 : https://yourdomain.com:445/ )

## SSL (HTTPS) PORT 443 Listen 443 NameVirtualHost *:443 LoadModule ssl_module modules/mod_ssl.so SSLPassPhraseDialog builtin SSLSessionCache shmcb:/var/cache/mod_ssl/scache(512000) SSLSessionCacheTimeout 300 SSLMutex default SSLRandomSeed startup file:/dev/urandom 256 SSLRandomSeed connect builtin SSLCryptoDevice builtin <VirtualHost *:443> ServerName host1.com SSLEngine on SSLOptions +StrictRequire SSLProtocol -all +TLSv1 +SSLv3 SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM SSLCertificateFile /etc/httpd/ssl/host1.crt SSLCertificateKeyFile /etc/httpd/ssl/host1.key SSLVerifyClient none SSLProxyEngine off SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 CustomLog logs/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" DocumentRoot /var/www/host1/ <Directory "/var/www/host1/"> Options Indexes FollowSymLinks AllowOverride All Order Allow,deny Allow from all </Directory> </VirtualHost> <VirtualHost *:443> ServerName host2.com SSLEngine on SSLOptions +StrictRequire SSLProtocol -all +TLSv1 +SSLv3 SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM SSLCertificateFile /etc/httpd/ssl/host2.crt SSLCertificateKeyFile /etc/httpd/ssl/host2.key SSLVerifyClient none SSLProxyEngine off SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 CustomLog logs/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" DocumentRoot /var/www/host2/ <Directory "/var/www/host2/"> Options Indexes FollowSymLinks AllowOverride All Order Allow,deny Allow from all </Directory> </VirtualHost> 

댓글

  • 감사합니다. 이것은 IIS 사이트입니다. 똑같은 작업을 수행하는 방법에 대한 단서가 있습니까?

답변

“두 번째 사이트”라고 말할 때 -두 번째 도메인 이름을 의미합니까? 에서와 같이 현재 하나의 클러스터에서 https://www.mycompany.com 를 호스팅하고 있으며 https://www.yourcompany.com 같은 클러스터에 있습니까?”가상 호스팅 “이”가상 호스팅 “이라고 생각합니다. http://support.microsoft.com/kb/q190008

여전히 두 번째 SSL 인증서를 구입해야하지만 두 가지를 동시에 호스팅 할 수 있습니다. 표준 포트 아래의 IP 주소 (적어도 사이트에 대한 사용자의 신뢰도를 높임).

댓글

  • 호스트를 사용했습니다. 헤더 이름과 두 사이트의 형식은 first.mycompany.com 및 second.mycompany.com입니다. 문제는 ” 고급 웹 사이트 식별 “에 HTTP에 대한 세 개의 열 (IP 주소, TCP 포트 및 호스트 헤더 값)이 있다는 것입니다. 하지만 HTTPS (IP 주소 및 SSL 포트)의 경우 2 개만 있으므로 ‘ 실제로 내가 볼 수있는 것으로는 불가능한 것 같습니다.

답변

일반적으로 SSL 바인딩 당 하나의 IP 주소가 필요합니다. 바인딩을 설정할 때 호스트 헤더를 추가 할 수 없습니다. 그 이유는 호스트 헤더가 브라우저에서 보낸 HTTP 헤더의 일부이고 이러한 헤더가 SSL 트래픽의 일부로 암호화되기 때문입니다. 호스트 이름 헤더를 읽으려면 서버가 먼저 트래픽을 해독해야하지만 그렇게하려면 사용할 인증서를 알아야합니다.이를 위해서는 호스트 헤더가 필요하므로 악순환에 빠지게됩니다.

해결책은 서버가 설치된 모든 인증서를 시도하고 요청을 해독하는 것입니다. 몇 개의 인증서가 설치되어 있으면 작동 할 수 있지만 SSL 웹 사이트가 수십 개 또는 수백 개있는 서버에서는 작동하지 않습니다. 서버가 각 수신 요청에 대해이 작업을 수행해야하므로 서버 속도가 크게 저하됩니다.

이에 대한 해결책은 SNI (Server Name Indication) 라는 SSL 프로토콜의 확장입니다. 그러면 서버가 다음을 수행 할 수 있도록 SSL 프로토콜에 호스트 이름이 추가됩니다. SSL 트래픽을 해독하기 전에 호스트 헤더를 확인하십시오.이 확장은 IIS 8 (Windows 2012) 이전 버전의 IIS에서 지원되지 않습니다. 클라이언트 측에서 SNI는 OS X 10.5.6 및 Windows Vista 이상에서 지원됩니다. . SNI는 Windows XP의 SChannel에서 지원되지 않으므로 Windows XP의 Internet Explorer (8.0 포함) 버전에서도 지원되지 않습니다.

Answer

IIS (다른 웹 서버와 마찬가지로)에는 들어오는 요청에 대해 사이트를 식별하는 세 가지 주요 식별자가 있습니다.

  1. IP 주소
  2. TCP port
  3. 호스트 헤더

단일 웹 서버에서 여러 웹 사이트를 실행하는 경우이 세 웹 사이트 중 적어도 하나는 각 사이트마다 달라야합니다. 많은 환경에서 서버에는 단일 IP 주소 만 제공되므로 변경할 수있는 TCP 포트와 호스트 헤더가 남습니다. https 웹 사이트를 다른 포트에서 실행할 수 있습니다. URL에 포트를 지정하기 만하면됩니다. 항상 바람직하지는 않습니다 (이는 https://www.foo.com:32000/index.html ). 대부분의 경우 포트 80 (http) 또는 443 (https)에서 모든 웹 사이트를 실행하여 깨끗한 URL로 끝나기를 원합니다. 그러면 호스트 헤더가 변경하려는 항목으로 남습니다.

IIS에서는 SSL과 호스트 헤더를 사용하는 동일한 IP / 포트 조합에 여러 사이트를 가질 수 있습니다.핵심은 인증서 자체에 여러 호스트 이름을 지정하는 와일드 카드 인증서 또는 SAN (Subject Alternative Names) 인증서를 사용해야한다는 것입니다. IIS 관리자 UI에서 SSL 사이트의 호스트 헤더에 대한 호스트 헤더 바인딩을 설정할 수 없습니다. 명령 줄을 통해 수행하거나 서버에서 applicationHost.config 파일을 수동으로 편집해야합니다.

명령 줄을 통한 설정에 대한 Technet의 정보는 여기 에서 찾을 수 있습니다.

이와 유사한 문제가있는 IIS 포럼은 여기 에서 찾을 수 있습니다.

명령을 실행하거나 구성 파일을 수동으로 편집 한 후, applicationHost.config 파일은 다음과 유사 할 수 있습니다.

<site name="first.mycompany.com"> ... <bindings> <binding protocol="http" bindingInformation="192.168.10.100:80:first.mycompany.com" /> <binding protocol="https" bindingInformation="192.168.10.100:443:first.mycompany.com" /> </bindings> ... </site> <site name="second.mycompany.com"> ... <bindings> <binding protocol="http" bindingInformation="192.168.10.100:80:second.mycompany.com" /> <binding protocol="https" bindingInformation="192.168.10.100:443:second.mycompany.com" /> </bindings> ... </site> 

그러면 IIS 관리자에서 바인딩이 표시됩니다. 도움이되기를 바랍니다.

* 수정 * 위의 정보는이를 가정했습니다. IIS7과 관련된 문제입니다. IIS6 용인 경우 따라야 할 다른 절차가 있습니다. 이에 대한 정보는 여기 에서 찾을 수 있습니다.

답변

마지막 의견을 고려하고 전문가의 답변을 검토 한 후 두 가지 솔루션을 추천 할 수 있습니다.

가장 좋은 솔루션은 다음과 같습니다.

무제한 구독을 보호 할 수있는 와일드 카드 SSL 인증서를 구입하십시오. 동일한 IP에서 호스팅되는 .domain.com (SSL 인증서에는 전용 IP가 필요함)

대체 솔루션 :

각 웹 사이트에 하나씩 두 개의 서로 다른 SSL 인증서를 구입할 수 있습니다. 여기에서 동일한 IP에서 호스팅 할 수 없습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다