Apache는 사용할 인증서를 어떻게 선택합니까?

Apache는 사용할 인증서를 어떻게 선택합니까?

현재 Apache는 certbot 및 http 챌린지로 생성된 호스트 인증서를 사용하여 여러 하위 도메인을 호스팅하고 있습니다.

이제 존재하지 않는 하위 도메인을 기본 도메인으로 리디렉션하도록 기본 가상 SSL 호스트를 설정하고 싶습니다. 이를 위해 DNS 챌린지를 통해 와일드카드 인증서를 생성하겠습니다.

현재 DNS 챌린지로 갱신을 자동화할 수 없기 때문에 Apache의 기본 SSL 호스트에만 와일드카드 인증서를 사용하고 싶습니다.

내 질문은 다음과 같습니다. Apache와 브라우저 간의 첫 번째 협상이 발생할 때 Apache는 먼저 요청된 호스트와 일치하는 구성에서 인증서를 찾습니까, 아니면 Apache가 매번 기본 SSL 호스트에 구성된 와일드카드 인증서를 제공합니까?

답변1

그만큼아파치 문서요청을 위해 VirtualHost가 선택되는 세부 섹션이 포함되어 있습니다. "서버가 적절한 이름 기반 가상 호스트를 선택하는 방법" 섹션의 인용문:

이름 기반 가상 호스트 확인의 첫 번째 단계는 IP 기반 확인이라는 점을 인식하는 것이 중요합니다. 이름 기반 가상 호스트 확인은 IP 기반 일치 항목으로 후보를 좁힌 후 가장 적절한 이름 기반 가상 호스트만 선택합니다. 모든 VirtualHost 지시문에서 IP 주소에 와일드카드(*)를 사용하면 이 IP 기반 매핑이 부적합해집니다.

요청이 도착하면 서버는 요청에 사용된 IP 주소와 포트를 기반으로 <VirtualHost> 인수와 가장 잘 일치하는(가장 구체적인) 일치하는 항목을 찾습니다.가장 일치하는 주소와 포트 조합을 포함하는 가상 호스트가 두 개 이상인 경우 Apache는 ServerName 및 ServerAlias ​​지시문을 요청에 있는 서버 이름과 추가로 비교합니다.

이름 기반 가상 호스트에서 ServerName 지시어를 생략하면 서버는 기본적으로 시스템 호스트 이름에서 파생된 FQDN(정규화된 도메인 이름)을 사용하게 됩니다. 이렇게 암시적으로 설정된 서버 이름은 반직관적인 가상 호스트 일치로 이어질 수 있으므로 사용하지 않는 것이 좋습니다.

전용 기본 VirtualHost를 생성해야 합니다. 다른 VirtualHost 블록에 명시적으로 나열되지 않은 호스트에 대한 모든 요청은 그곳으로 전달되므로 그곳에서 사용할 인증서를 선택할 수 있습니다.

답변2

Apache를 사용하면 가상 호스트 수준에서 SSLCertificateFile 지시어를 지정할 수 있습니다. 보다SSL인증서파일, "컨텍스트: 서버 구성, 가상 호스트"라고 표시됩니다. 따라서 요청에 응답하기 위해 어떤 가상 호스트를 사용하든(기본 가상 호스트이든 다른 가상 호스트이든) 해당 가상 호스트에서 SSLCertificateFile로 구성한 인증서를 사용합니다.

귀하의 질문에 대한 답변이 되었기를 바랍니다.

관련 정보