Làm cách nào để xác định chứng chỉ SSL nginx nào gửi trước tiên với SNI?


12

Tôi sử dụng nginx 1.2.7 với OpenSSL 0.9.8o trên Debian Squeeze cho khoảng 30 tên miền. Trên hai trong số đó tôi đã kích hoạt SSL hoạt động tốt trên cả hai.

Cấu hình SSL được sử dụng cho cả hai miền:

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;

Kiểm tra cả hai tên miền bằng trình kiểm tra ssllabs.com tôi nhận được một tên miền thông báo "Trang web này chỉ hoạt động trong các trình duyệt có hỗ trợ SNI." Đối với tên miền khác, tôi không nhận được thông báo này. Có vẻ như nginx theo mặc định sẽ gửi chứng chỉ cho miền đầu tiên theo thứ tự bảng chữ cái cho khách hàng mà không cần hỗ trợ SNI. Tôi có thể thay đổi hành vi này không?

Nói cách khác: Tôi muốn định cấu hình nginx để có một tên miền cụ thể với SSL hoạt động ngay cả đối với các máy khách không có hỗ trợ SNI. Các tên miền khác cũng hoạt động với SSL, nhưng sẽ ổn nếu nó chỉ hoạt động trên các máy khách hỗ trợ SNI.

Cảm ơn!

Câu trả lời:


20

Các default_serverthiết lập của các listenchỉ thị cần xác định giấy chứng nhận sẽ được gửi cho một yêu cầu mà không SNI bộ trong cái bắt tay. Thay đổi listenchỉ thị của mặc định mong muốn:

listen 443 default_server ssl;
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.