nginx가 SNI로 먼저 보내는 SSL 인증서를 정의하는 방법은 무엇입니까?


12

약 30 개의 도메인에 대해 Debian Squeeze에서 OpenSSL 0.9.8o와 함께 nginx 1.2.7을 사용합니다. 그중 두 가지에서 SSL을 사용하도록 설정했습니다.

SSL 구성은 두 도메인 모두에 사용됩니다.

listen 443 ssl;
ssl_certificate /etc/nginx/ssl/example.org-unified.crt;
ssl_certificate_key /etc/nginx/ssl/example.org.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security max-age=600000;

ssllabs.com checker로 두 도메인 확인 한 도메인에 대해 "이 사이트는 SNI를 지원하는 브라우저에서만 작동합니다."라는 알림을받습니다. 다른 도메인의 경우이 메시지가 표시되지 않습니다. 기본적으로 nginx는 알파벳순으로 첫 번째 도메인의 인증서를 SNI 지원없이 클라이언트에게 보내는 것처럼 보입니다. 이 행동을 바꿀 수 있습니까?

즉, SNI를 지원하지 않는 클라이언트에서도 SSL이 작동하는 특정 도메인을 갖도록 nginx를 구성하고 싶습니다. 다른 도메인도 SSL과 함께 작동해야하지만 SNI 지원 클라이언트에서만 작동하는 것이 좋습니다.

감사!

답변:


20

지시문 의 default_server설정은 listen핸드 셰이크에 SNI가 설정되지 않은 요청에 대해 어떤 인증서가 전송되는지 결정해야합니다. listen원하는 기본값 의 지시문을 변경하십시오 .

listen 443 default_server ssl;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.