Cấu hình Nginx để Qualys SSL Labs xếp hạng A
Lưu ý: Các tiêu chuẩn đánh giá của Qualys SSL Labs thay đổi theo thời gian, do đó bài viết này cũng sẽ được cập nhật thường xuyên
Để Qualys SSL Labs xếp hạng A, bạn cần phải cập nhật cấu hình của Nginx thỏa mãn một số tiêu chí nhất định. Bạn có thể tham khảo bài viết này để thực hiện cập nhật cho máy chủ của mình.
1. Chỉ hỗ trợ TLS 1.0, TLS 1.1 và TLS 1.2, vô hiệu hóa SSL 2.0 và SSL 3.0
Bạn cần phải nâng cấp phiên bản OpenSSL lên phiên bản mới nhất không bị vướng lỗ hổng bảo mật và hỗ trợ TLS 1.2 và TLS 1.2. Ví dụ: các phiên bản 0.9.x và 1.0.0 trở về trước không hỗ trợ TLS 1.2.
Sau khi nâng cấp OpenSSL, bạn cần phải build lại hoặc nâng cấp Nginx lên phiên bản mới nhất. Kể từ phiên bản 1.1.13 trở lên, Nginx đã hỗ trợ TLS 1.1 và TLS 1.2.
Để vô hiệu hóa SSL 2.0, SSL 3.0 và chỉ hỗ trợ TLS 1.0, TLS 1.1 và TLS 1.2, bạn cần chỉnh lại tham số sau:
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
2. Poodle and TLS-FALLBACK-SCSV
SSL 3.0 là nguyên nhân quan trọng nhất gây ra lỗ hổng Poodle. Bằng cách vô hiệu hóa SSL 3.0, bạn đã khắc phục lỗ hổng Poodle cho máy chủ.
Để vô hiệu hóa lỗ hổng "protocol downgrade attack", extension TLS FALLBACK SCSV phải được kích hoạt trong OpenSSL. Các phiên bản sau đây đã bao gồm extension này:
- OpenSSL 1.0.1j hoặc cao hơn
- OpenSSL 1.0.0o hoặc cao hơn
- OpenSSL 0.9.8zc hoặc cao hơn
3. Heartbleed
Lỗ hổng Heartbleed là một lỗ hổng khá nghiêm trọng, có thể ảnh hưởng đến mọi máy chủ sử dụng thư viện OpenSSL. Để khắc phục lỗi này, cách duy nhất là bạn phải kiểm tra phiên bản OpenSSL đang sử dụng và nâng cấp nếu nằm trong danh sách sau đây:
- OpenSSL 1.0.1 đến 1.0.1f bị ảnh hưởngg
- OpenSSL 1.0.1g không bị ảnh hưởng
- OpenSSL 1.0.0 không bị ảnh hưởng
- OpenSSL 0.9.8 không bị ảnh hưởng
4. Cipher suites
Luôn luôn áp dụng các cipher suites an toàn nhất và yêu cầu server lựa chọn ưu tiên theo thứ tự mà bạn đã thiết lập.
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";
5. Strong DH (Diffie-Hellman)
Chạy lệnh:
openssl dhparam -out /usr/local/ssl/dhparams.pem 2048
Bổ sung dòng sau đây vào file cấu hình:
ssl_dhparam /usr/local/ssl/dhparams.pem;