Tôi có nginx (1.21.6) đang chạy với openssl 1.1.1n trên máy chủ Debian 11.
Mặc dù tôi đã làm theo nhiều hướng dẫn và xem nhiều câu hỏi trong diễn đàn này về chủ đề này, nhưng tôi không thể làm cho TLS 1.3 hoạt động.
đầu ra của nginx -V
:
phiên bản nginx: nginx/1.21.6
được xây dựng bởi gcc 10.2.1 20210110 (Debian 10.2.1-6)
được xây dựng với OpenSSL 1.1.1k ngày 25 tháng 3 năm 2021 (chạy với OpenSSL 1.1.1n ngày 15 tháng 3 năm 2022)
Kích hoạt hỗ trợ TLS SNI
Tôi đã nâng cấp nginx lên phiên bản chính vì tôi cũng không thể làm cho TLS 1.3 hoạt động trong các phiên bản trước. Nó rất lạ...
Openssl chắc chắn hỗ trợ TLS 1.3. Tôi đã kiểm tra nó qua openssl s_client -tls1_3 -kết nối www.cloudflare.com:443
mà làm việc tốt.
đây của tôi ssl.conf
tệp nginx mà tôi đã đưa vào từng máy chủ nginx của mình (chứng chỉ được bao gồm riêng trong phần máy chủ):
ssl_session_timeout 1d;
ssl_session_cache được chia sẻ:SSL:10m; # khoảng 40000 phiên
tắt ssl_session_tickets;
ssl_dập ghim vào;
#ssl_trusted_certificate /pfad/bundle.ca.pem;
ssl_stapling_verify bật;
ssl_dhparam /etc/nginx/dhparams.pem;
ssl_ecdh_curve X448:secp521r1:secp384r1;
ssl_protocols TLSv1.3 TLSv1.2;
ssl_ciphers TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:TLS-AES -128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA -CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
bật ssl_prefer_server_ciphers;
# HSTS (bắt buộc phải có ngx_http_headers_module) (63072000 giây)
add_header Strict-Transport-Security "max-age=31536000;preload;includeSubDomains" luôn;
Các Chất lượng ssltest của các trang web của tôi tuy nhiên không cho thấy rằng tôi sử dụng TLS 1.3 trên máy chủ của mình. Ngoài ra, trình duyệt Chrome cho thấy nó kết nối qua TLS 1.2.
Ngay cả khi tôi loại bỏ TLSv1.2
chỉ thị từ tôi ssl.conf
và chỉ để lại TLSv1.3
, nó vẫn kết nối qua TLS 1.2.
Không có nơi nào khác ssl_protocols
trong bất kỳ tệp cấu hình nào khác của nginx. Tôi đã kiểm tra điều đó thông qua nginx -T
.
Tôi thực sự cạn kiệt ý tưởng .....
Ai giúp tôi với?
CHỈNH SỬA:
Bằng cách nào đó, nginx dường như không phản ứng trên ssl_protocols
và ssl_ecdh_curve
chỉ đạo đúng cách. Ví dụ: khi tôi xóa ssl_ciphers
từ cấu hình của tôi (như @droookie đã đề xuất trong nhận xét của anh ấy), TLS 1.0 và TLS 1.1 dường như được máy chủ của tôi hỗ trợ mặc dù tôi đã đặt ssl_protocols TLSv1.3 TLSv1.2;
. Tương tự, theo chất lượng ssltest, secp256r1
được hỗ trợ, mặc dù tôi không có đường cong này trong cấu hình của mình ssl_ecdh_curve
(cũng không số nguyên tố256v1
). Đối với tôi, dường như có thứ gì đó ghi đè cài đặt của tôi trong ssl.conf
tập tin.
Tôi đang sử dụng acme.sh để lấy chứng chỉ của mình.
grep -R 'ssl_protocol' /etc/*
chỉ đưa ra dòng trong ssl.conf
với ssl_protocols TLSv1.3 TLSv1.2;
.
Tôi không biết điều gì có thể gây nhiễu/ghi đè...