구성 파일에서 첫 번째 VirtualHost에 대해서만 SSLProtocol을 설정할 수 있습니다. 모든 후속 VirtualHost 항목은 첫 번째 항목에서 해당 설정을 상속하며 OpenSSL 버그 로 인해 자체 설정을 자동으로 무시합니다 .
mod_ssl에 해당하는 버그 보고서가 있지만 버그 보고서에 설명 된대로 OpenSSL에서 문제를 해결해야합니다 (인증서는 상속되지만 프로토콜은 아님).
암호 제품군은 각 VirtualHost에 대해 독립적으로 설정해야합니다. 그렇지 않으면 많은 안전하지 않은 암호를 포함하여 기본 목록이 표시됩니다. 또한 SNI (Server Name Indication)를 지원하지 않는 이전 클라이언트는 항상 기본 호스트 (을 사용하여 차단SSLStrictSNIVHostCheck
하지 않은 경우)를 사용하므로 테스트를 혼란스럽게 할 수 있습니다.
요컨대, 각 가상 호스트에 대한 사용자 정의 암호 스위트 및 인증서를 지정할 수 있어야하지만 버그가 수정 될 때까지 각 가상 호스트에 대한 사용자 정의 프로토콜에 대한 올바른 동작을 기대하지는 않습니다.
Apache 2.4와 OpenSSL 1.0.1k의 modssl 에서이 문제가 발생했으며 Apache 2.2에도 동일한 문제가 발생할 것으로 예상됩니다.
업데이트 (2016 년 10 월) : OpenSSL 버그는 2016 년 10 월 13 일에 해결 된 것으로 표시되었습니다. 그러나 이는 공개 문제의 대량 폐쇄의 일부였으며 '부분 수정'이 제공되었지만 문제가 완전히 해결되지는 않았습니다.
업데이트 (2018 년 4 월) : 다시 제출 된 OpenSSL 버그에 패치가 제공됩니다 (2018 년 4 월 9 일 현재). 이 패치는 여러 SNI 가상 호스트로 구성된 Apache 인스턴스의 동작을 변경합니다.
가상 호스트 SSL 프로토콜을 준수하지 않는 연결 거부
이것은 2.4.27로 개발 및 테스트되었으며 해당 버전으로 프로덕션되었습니다. 패치는 2.4.33을 위해 수정되었으며 가볍게 테스트되었습니다.
SNI를 기반으로 일치하는 가상 호스트에 대해 구성된 SSLProtocol에 대한 연결 버전을 확인합니다. 포트의 기본 호스트에 대해 구성된 SSLProtocol을 사용하여 처음 연결되기 때문에 기본 호스트에는 모든 가상 호스트에서 지원할 모든 프로토콜이 포함되어야합니다.
이 패치는 OpenSSL에 등록 된 ssl_callback_ServerNameIndication 콜백이 치명적 경고 SSL_AD_PROTOCOL_VERSION을 리턴 할 수 있도록 APR_EMISMATCH의 추가 리턴 상태를 init_vhost 함수에 추가합니다. 이는 해당 버전을 포함하지 않는 SSLProtocol이 지정되어있는 것과 동일한 응답을 ClientHello에 생성하기위한 것입니다. SNI 콜백은 ClientHello 처리 중 및 응답이 생성되기 전에 호출되므로 정확하게 수행하는 것 같습니다.
갑자기 다음 형식의 메시지가 표시되는 경우 :
Rejecting version [version] for servername [hostname]
그런 다음 SSLProtocol
기본 호스트를 다시 확인해야 합니다.
SSLStrictSNIVHostCheck
가 추가 한 추가 정보 는 대단히 감사합니다. 그러나 인용 된 문서 에서 다른 가상 호스트에서 on 으로 설정된 경우 SNI를 인식하지 못하는 클라이언트는이 특정 가상 호스트에 액세스 할 수 없습니다 .