동일한 IP에서 SSL을 사용하는 여러 도메인


답변:


28

가상 호스트와 SSL / TLS의 문제가 무엇인지 설명하는 것이 좋습니다.

HTTP를 통해 아파치 서버에 연결하면 http 헤더 세트가 함께 전송됩니다. 그들은 다음과 같이 보입니다 :

GET /index.html HTTP/1.1
 Host: www.nice-puppies.com

가상 호스팅 아파치가있는 경우 호스트 필드를보고 올바른 index.html을 가져옵니다. SSL / TLS를 추가 할 때 문제가 발생합니다. 서버는 http 요청을 보내기 전에 암호화를 설정합니다. 따라서 서버는 인증 / 암호화가 완료 될 때까지 www.nice-puppies.com 또는 www.evil-haxxor.com으로 갈지 여부를 알 수 없습니다. 서버가 추측 할 수 없습니다 (잘못된 인증서를 보내면 불쾌한 오류 메시지가 표시됨).

하나의 솔루션은 * .nice-puppies.com에 유효한 와일드 카드 인증서입니다 (위에서 언급 한 바와 같이). 이렇게하면 여러 도메인에 동일한 인증서를 사용할 수 있지만 * .com 인증서를 가질 수는 없습니다 (좋아요,하지만 다른 사람에게는 매우 나쁩니다). 일반적으로 각 도메인마다 별도의 IP가 필요합니다 HTTPS 도메인.


4
좋은 설명이지만 하나의 인증서로 여러 도메인을 허용하는 UC 인증서를 가질 수 있습니다
Sam Cogan

1
예, 통합 통신 인증서 (UCC / UC 인증서)를 보유 할 수 있습니다. 아마 그것들을 언급했을 것입니다. 내가 본 한, 대부분 Exchange / Office Communication Server와 함께 사용됩니다. 다른 사이트에 동일한 인증서를 사용하면 x509 의미를 남용합니다. 그러나 대부분의 TLS 스택에서 작동합니다.
pehrs

6
또한 SNI. 귀하의 진술은 더 이상 결정적이지 않습니다. 귀하의 설명은 역사적으로 정확하지만 더 이상 현재 기술을 반영하지 않습니다.
Warner

4
SNI는 Windows XP의 IE6에서 작동하지 않습니다 (아직?). 시장 점유율을 고려하여 어떤 종류의 가치를 제한합니다. 나는 원래 사용자가 주변을 돌아 다니기 위해 존재하는 해킹보다 발생할 일에 더 관심이 있다고 생각합니다.
pehrs

SHTTP에서 HTTPS 로의 끝에 철자 실수를 정정하려고했지만 너무 작은 편집으로 거부되었습니다.
스튜어트

8

이 문제에 대한 실제 해결책은 "서버 이름 표시"입니다.

http://en.wikipedia.org/wiki/Server_Name_Indication

서버와 웹 클라이언트에만 배포되기 시작하여 실제로 사용할 수있는 것은 아니지만 몇 년 안에 큰 문제가되지 않기를 바랍니다.


2

문제는 SSL 인증서가 호스트 이름이 아닌 IP 주소에 바인딩되어 있다는 것입니다. HTTPS 요청에 대한 IP 주소로 연결이 이루어지면 첫 번째 조치는 서버 인증서 및 / 또는 클라이언트 인증서를 전달하여 SSL 통신을 설정하는 것입니다. 연결 핸드 쉐이크의이 단계에서 Apache 서버는 어떤 요청이 들어올 지 알 수있는 방법이 없습니다. 연결이 설정된 후 클라이언트가 Host헤더를 보내 거나 구성된 첫 번째 가상 호스트 로 전달할 경우 Apache 서버가 사용할 가상 호스트 구성을 결정할 수 있으므로 HTTP (비 SSL) 트래픽의 경우와 다릅니다 .

동일한 도메인에 여러 개의 가상 호스트가있는 경우 IP 주소에 단일 와일드 카드 인증서를 설정하고 다른 서버 이름으로 여러 개의 가상 호스트를 정의 할 수 있습니다. 그러나 해당 서버 이름이 동일한 도메인 이름이 아닌 경우 클라이언트 서버 오류가 발생합니다. 와일드 카드 인증서는 해당 도메인 이름 아래의 모든 호스트 이름에 유효하므로 작동합니다. 도메인 이름이 해당 IP 주소에 대해 정의 된 첫 번째 인증서가 클라이언트 연결을 위해 제공되는 인증서와 다르면 다른 IP 주소가 필요합니다.


1

이것은 하나의 단일 SSL 인증서에 SAN (Subject Alternative Name)으로 추가 될 수 있습니다. 나의 exceriance에서 나는 조직 sll 증명서를 요구해야했다. 나는 globalsign을 사용했다.


1

실제로 최신 소프트웨어를 사용하면 'SNI-서버 이름 표시'라는 새로운 기능을 사용하여 단일 IP 주소를 통해 여러 HTTPS 사이트를 제공 할 수 있습니다.

http://en.wikipedia.org/wiki/Server_Name_Indication

http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI

나는 이것을 직접 사용하지는 않았지만 내부 및 인트라넷 사이트에는 좋습니다. 대부분의 최신 브라우저는 SNI를 지원합니다. IE6는 SNI를 지원하지 않지만 IE7은 지원합니다.

(수정 : 20100426-SNI는 Windows XP에서 전혀 지원되지 않습니다. Windows Vista 이상에서는 SNI를 지원합니다. http://msdn.microsoft.com/en-us/library/dd208005%의 "2.2.3 단원"을 참조하십시오. 28v = PROT.13 % 29.aspx # id8 ).


2
IE의 경우 지원은 IE 버전에서 제공되는 것이 아니라 기본 OS 버전에서 제공됩니다. Vista 이상은 SNI를 지원합니다. XP는 XP에서 IE8을 사용하더라도 SNI를 얻지 못합니다.
Nasko

1

나는 같은 문제에 대해 노력하고 있습니다. 내 테스트로 IE7 이상 (Win7 및 Vista에서만) / Chrome / Firefox / Safari / Opera는 "서버 이름 표시"를 지원합니다. 실제로 브라우저가 Tsl 1.0을 사용하는 경우 "서버 이름 표시"를 지원합니다.


0

OP가 가상 호스트가 많은 IP에 SSL 인증서를 추가하면 어떻게 될지를 묻고 있다고 생각합니다. 다른 가상 호스트 중 어느 것도 SSL 인증서를 사용하지 않는다면 분명해야합니다.


글쎄, 나는 질문에 의아해합니다. Q의 제목은 검은 색이고 내용은 흰색입니다.
Iraklis

이것은 흰색입니다
Iraklis


0

동일한 IP에 두 개의 인증서를 추가하려고하면 처음에 읽은 인증서 만 사용됩니다. 하나의 IP-하나의 SSL 인증서.

동일한 IP에서 더 많은 SSL 인증서를 받으려면 다중 도메인 ( UCC- @ godaddy 체크 아웃 ) 또는 와일드 카드 (더 비싼) 인증서를 가져 오는 것이 좋습니다.


아파치 conf에 처음 추가 된 인증서는 두 가지 모두에 사용될 것입니까?
nitins

1
사이트 A와 B에 대한 두 개의 인증서가 있고 아파치가 A.conf 순서로 호스트에 대한 구성을로드 한 다음 B.conf이면 A.conf의 인증서를 사용합니다. 혹은 그 반대로도.
Andrejs Cainikovs
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.