Điểm:1

TLS 1.3 không hoạt động trên nginx 1.21 với openssl 1.1.1n

lá cờ us

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_protocolstrong 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_protocolsssl_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 đè...

Steffen Ullrich avatar
lá cờ se
Bạn đã kiểm tra nhật ký lỗi chưa?
lá cờ br
nginx -t báo cáo điều gì?
phonon112358 avatar
lá cờ us
@Robert Longson `nginx -t nginx: cú pháp file cấu hình /etc/nginx/nginx.conf là ok nginx: file cấu hình /etc/nginx/nginx.conf kiểm tra thành công`
phonon112358 avatar
lá cờ us
@Steffen Ullrich: Tôi chỉ thấy lỗi đến từ SSLTest từ qualys, cho biết rằng một số bắt tay không thành công: `[crit] 94566#94566: *34 SSL_do_handshake() fail (SSL: error:14201044:SSL routines:tls_choose_sigalg:internal lỗi) trong khi bắt tay SSL, máy khách: 64.41.200.113, máy chủ: 0.0.0.0:443`. Ngay cả trong chế độ gỡ lỗi, không có thêm lỗi SSL nào được hiển thị khi tôi truy cập trang web.
phonon112358 avatar
lá cờ us
một lỗi khác đến từ Qualys ssltest `[info] 47207#47207: *206 SSL_do_handshake() fail (SSL: error:1417A0C1:SSL routines:tls_post_process_client_hello:no shared cipher) trong khi SSL bắt tay, máy khách: 64.41.200.114, máy chủ: 0.0. 0,0:443`. Nhưng tôi đoán đó là bình thường
drookie avatar
lá cờ za
Thu hồi `ssl_ciphers`, thử mặc định cho người mới bắt đầu. Bạn có thể chỉ thiếu mật mã cho TLS 1.3.
phonon112358 avatar
lá cờ us
@droookie Loại bỏ `ssl_ciphers`làm cho máy chủ chấp nhận TLS 1.0 và TLS 1.1, chứ không phải TLS 1.3! Rất thú vị là nó dường như bỏ qua `ssl_protocols`...
Điểm:1
lá cờ us

Sau nhiều lần kiểm tra thêm và đọc nhiều, cuối cùng tôi cũng tìm ra giải pháp. Tôi đã phải viết cấu hình ssl trong http khối, không có trong người phục vụ các khối cấu hình nginx của tôi. Tuy nhiên, điều này chỉ hiệu quả nếu tôi sao chép các chỉ thị từ ssl.conf tập tin rõ ràng để http chặn trong tôi nginx.conf (nếu không thì nginx -t đầu ra

nginx: [xuất hiện] số lượng đối số không hợp lệ trong lệnh "bao gồm" trong /etc/nginx/nginx.conf:33
nginx: kiểm tra tệp cấu hình /etc/nginx/nginx.conf không thành công

đối với một số lý do).

Do đó, của tôi http khối nginx.conf bây giờ trông như sau:

http {

  ...
 
    ssl_dhparam /etc/nginx/dhparams.pem;
    
    ssl_ecdh_curve X448:secp521r1:secp384r1;
    
    ssl_protocols TLSv1.3 TLSv1.2;
   ssl_ciphers 'TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA- AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';

   ...

    # Cấu hình máy chủ ảo
    ##

    bao gồm /etc/nginx/conf.d/*.conf;
    bao gồm /etc/nginx/sites-enabled/*;
}

Tôi không biết tại sao các cài đặt ssl này phải được đưa/dán vào http khối chứ không phải trong mỗi người phục vụ chặn..... Nhưng nó hoạt động và TLS 1.3 được kích hoạt!

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.