Server Configuration

วิธีตั้งค่า TLS 1.2 และ TLS 1.3 บน Nginx

A
admin
15 พฤษภาคม 2568 0 ครั้ง
แชร์:

วิธีตั้งค่า TLS 1.2 และ TLS 1.3 บน Nginx

Nginx รองรับ TLS 1.3 เมื่อคอมไพล์กับ OpenSSL 1.1.1 หรือใหม่กว่า (เริ่มมีใน Nginx 1.13.0) รายละเอียดไดเรกทิฟอยู่ที่ nginx ngx_http_ssl_module

การตั้งค่าหลัก

nginx
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 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 off;

ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;

ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 8.8.8.8 valid=300s;
resolver_timeout 5s;

add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;

ชุด ssl_ciphers มีผลกับ TLS 1.2 เท่านั้น TLS 1.3 ใช้ cipher ของตัวโปรโตคอลเอง

Server block

nginx
server {
    listen 443 ssl;
    http2 on;
    server_name example.com;

    ssl_certificate     /etc/nginx/ssl/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/privkey.pem;
    ssl_trusted_certificate /etc/nginx/ssl/chain.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    add_header X-Content-Type-Options "nosniff" always;
    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
}

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

ไดเรกทิฟ http2 on; ใช้กับ Nginx 1.25.1+ ส่วนเวอร์ชันเก่าใช้ listen 443 ssl http2;

สรุป

ปิดโปรโตคอลเก่า, ใช้ full chain ใน ssl_certificate, เปิด OCSP stapling และอย่าเปิด session tickets ถ้ายังไม่ได้หมุนกุญแจอย่างถูกต้อง

แหล่งอ้างอิง

หมวดหมู่: Server Configuration