나는 당신이 이것을 할 수 있다고 생각하지만 당신이하려는 방식은 아닙니다.
SSL 인증서는 공용 암호화 키를 CN (Common Name) 요소를 포함하는 X.500 구조에 바인딩하는 명령문입니다. 서명 된 인증서는 최종 사용자에게 이미 알려진 공개 키 (브라우저 내에있는 CA (Certificate Authority) 인증서 스택)를 사용하여 바인딩이 타사 인증 기관에 의해 확인 가능한 경우입니다.
브라우저가있는 SSL 보안 웹 사이트를 방문하면 서명 된 CN이 브라우저에 알려집니다. 브라우저가 브라우저와 관련하여 선택하는 것은 브라우저에 달려 있습니다. 내가 알고있는 브라우저는 요청한 호스트 이름과 비교하고 다른 경우 (또는 인증 된 바인딩이 분석에 맞지 않는 경우 오류가 발생합니다 (예 : 서명 인증서가 브라우저에 알려지지 않았거나 바인딩이 없음) 최신이지만 다른 문제입니다). CN이 FQDN (정규화 된 도메인 이름)이 아닌 IP 주소 [1] 가 아닌 공개적으로 서명 된 인증서를 얻는 것을 원칙적으로 막을 수는 없지만, 브라우저가 CN을 IP와 비교할 수는 없습니다. 요청 된 hostname 대신 주소를 사용하십시오 .
문제를 해결하는 가장 간단한 방법은 자신의 CA를 시작하는 것입니다. 쉽게 수행 할 수 있으며 이에 대한 많은 공개 자습서가 있습니다. 하나는 여기에 있습니다 . 최종 사용자가 CA를 브라우저로 가져 오면 사용자가 인증 한 모든 인증서가 신뢰할 수있는 것으로 승인됩니다.
그런 다음 단일 IP 주소에서 많은 NameVirtualHost 사이트를 실행하려는 두 번째 문제가있을 수 있습니다. (TLS와 달리) SSL 협상이 연결의 다른 것보다 먼저 발생하기 때문에 이는 역사적으로 불가능했습니다. 즉, 인증서에 포함 된 CN 은 클라이언트가 연결하려는 호스트를 말할 수 있기 전에 클라이언트에 알려지고 사용됩니다.
최근 SNI (Server Name Indication)라는 프로토콜 확장이 도입 된 것으로 보이며,이를 통해 클라이언트와 서버는 SSL 인증서가 제시되기 전에 호스트 이름을 수행하고 싶다는 것을 표시 할 수 있습니다. 서버가 제공 할 인증서 분명히이 아파치 2.2.10하는 OpenSSL을 충분히 최신 버전, 그리고 (필요 중요한 ) 클라이언트 측 지원을 제공합니다.
그래서 당신이하려는 일을해야한다면, 내 자신의 CA 인증서를 작성하는 것을보고 최종 사용자에게 SNI를 지원하고 CA 루트 인증서를 가져 오는 브라우저를 사용해야하며 각 버그 트랙 사이트에 대해 내 SSL 인증서에 서명합니다.
[1] 좋아, 당신은 그것을 할 사람을 찾지 못했을 수도 있지만, 그것은 구현 세부 사항입니다. 내가 여기에 표시하려고하는 것은 당신이 그렇게하더라도 문제가 해결되지 않는다는 것입니다.