ฉันมี nginx (1.21.6) ที่ทำงานด้วย opensl 1.1.1n บนเซิร์ฟเวอร์ Debian 11
แม้ว่าฉันจะทำตามบทช่วยสอนมากมายและดูคำถามหลายข้อในฟอรัมนี้เกี่ยวกับหัวข้อนี้ แต่ฉันไม่สามารถใช้งาน TLS 1.3 ได้
ผลลัพธ์ของ nginx -V
:
รุ่น nginx: nginx/1.21.6
สร้างโดย gcc 10.2.1 20210110 (Debian 10.2.1-6)
สร้างด้วย OpenSSL 1.1.1k 25 มี.ค. 2564 (ทำงานด้วย OpenSSL 1.1.1n 15 มี.ค. 2565)
เปิดใช้งานการสนับสนุน TLS SNI
ฉันอัปเกรด nginx เป็นเวอร์ชัน mainline เนื่องจากฉันไม่สามารถให้ TLS 1.3 ทำงานในเวอร์ชันก่อนหน้าได้เช่นกัน มันแปลกมาก...
Opensl รองรับ TLS 1.3 อย่างแน่นอน ฉันทดสอบผ่าน openssl s_client -tls1_3 -เชื่อมต่อ www.cloudflare.com:443
ซึ่งทำงานได้ดี
นี่ของฉัน ssl.conf
ไฟล์ nginx ที่ฉันรวมไว้ในแต่ละเซิร์ฟเวอร์ nginx ของฉัน (ใบรับรองจะรวมอยู่ในส่วนเซิร์ฟเวอร์แยกต่างหาก):
ssl_session_timeout 1d;
ssl_session_cache ที่ใช้ร่วมกัน: SSL:10m; # ประมาณ 40,000 ครั้ง
ปิด ssl_session_tickets;
เปิด ssl_stapling;
#ssl_trusted_certificate /pfad/bundle.ca.pem;
เปิด ssl_stapling_verify;
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;
เปิด ssl_prefer_server_ciphers;
# HSTS (ต้องมี ngx_http_headers_module) (63072000 วินาที)
add_header Strict-Transport-Security "max-age=31536000;preload;includeSubDomains" เสมอ
เดอะ Qualys ssltest ของเว็บไซต์ของฉัน ไม่ได้แสดงว่าฉันใช้ TLS 1.3 บนเซิร์ฟเวอร์ของฉัน นอกจากนี้ เบราว์เซอร์ Chrome ยังแสดงว่าเชื่อมต่อผ่าน TLS 1.2
แม้ว่าฉันจะลบ TLSv1.2
คำสั่งจากฉัน ssl.conf
และจากไปเท่านั้น TLSv1.3
มันยังเชื่อมต่อผ่าน TLS 1.2
ไม่มีที่ไหนอีกแล้วก ssl_โปรโตคอล
คำสั่งในไฟล์กำหนดค่าอื่น ๆ ของ nginx ฉันตรวจสอบผ่านทาง nginx -T
.
หมดไอเดียจริงๆ.....
ใครสามารถช่วยฉันได้บ้าง
แก้ไข:
อย่างใด nginx ดูเหมือนจะไม่ตอบสนองต่อ ssl_โปรโตคอล
และ ssl_ecdh_curve
กำกับอย่างถูกต้อง เช่น เมื่อฉันลบไฟล์ ssl_ciphers
จากการกำหนดค่าของฉัน (ตามที่ @drookie แนะนำในความคิดเห็นของเขา) เซิร์ฟเวอร์ของฉันรองรับ TLS 1.0 และ TLS 1.1 แม้ว่าฉันจะตั้งค่า ssl_protocols TLSv1.3 TLSv1.2;
. ในทำนองเดียวกันตาม ทดสอบคุณภาพ, secp256r1
ได้รับการสนับสนุน แม้ว่าฉันจะไม่มีเส้นโค้งนี้ในการกำหนดค่าของฉัน ssl_ecdh_curve
(ก็ไม่เช่นกัน ไพรม์256v1
). สำหรับฉันแล้วดูเหมือนว่ามีบางอย่างเขียนทับการตั้งค่าของฉันใน ssl.conf
ไฟล์.
ฉันใช้ acme.sh เพื่อรับใบรับรอง
grep -R 'ssl_protocol' /etc/*
ให้ไลน์เข้ามาเท่านั้น ssl.conf
กับ ssl_protocols TLSv1.3 TLSv1.2;
.
ฉันไม่รู้ว่าอะไรเป็นสาเหตุของการรบกวน/การเขียนทับ...