Cấu hình TLS 1.3 cho Nginx và Apache
Cập nhật lần cuối: 08/08/2026
TLS 1.3 là phiên bản mới nhất của giao thức Transport Layer Security (TLS), mang lại khả năng bảo mật cao hơn và tốc độ kết nối nhanh hơn so với TLS 1.2. Bài viết hướng dẫn cách kiểm tra điều kiện, cấu hình TLS 1.3 trên Nginx và Apache, đồng thời chia sẻ các lưu ý quan trọng để triển khai an toàn trên môi trường production.
Cấu hình TLS 1.3 cho Nginx và Apache
TLS 1.3 là phiên bản mới nhất của giao thức TLS hiện nay, được thiết kế để cải thiện cả hiệu suất lẫn bảo mật so với TLS 1.2 và các phiên bản trước đó.
Việc kích hoạt TLS 1.3 giúp website giảm thời gian thiết lập kết nối, loại bỏ nhiều thuật toán mã hóa cũ và nâng cao khả năng chống lại các cuộc tấn công hiện đại.
TLS 1.3 hiện được hỗ trợ bởi hầu hết các trình duyệt, hệ điều hành và máy chủ web hiện đại.
Xem thêm: TLS 1.3 là gì?
Điều kiện để sử dụng TLS 1.3
Trước khi cấu hình TLS 1.3, cần đảm bảo hệ thống đáp ứng các yêu cầu tối thiểu.
| Thành phần | Yêu cầu |
|---|---|
| OpenSSL | 1.1.1 trở lên |
| Nginx | 1.13 trở lên (khuyến nghị phiên bản mới) |
| Apache | 2.4.37 trở lên |
| Trình duyệt | Hỗ trợ TLS 1.3 |
Nếu OpenSSL quá cũ, dù Nginx hoặc Apache đã hỗ trợ TLS 1.3 thì tính năng này vẫn không hoạt động.
Xem thêm: OpenSSL là gì?
Kiểm tra phiên bản OpenSSL
Trước khi thực hiện cấu hình, hãy kiểm tra phiên bản OpenSSL đang sử dụng.
Trên Linux:
openssl version
Ví dụ kết quả:
OpenSSL 3.0.13
Hoặc:
OpenSSL 1.1.1w
Đây là các phiên bản hỗ trợ TLS 1.3.
Kiểm tra Nginx đang sử dụng OpenSSL nào
Trong một số trường hợp máy chủ có nhiều phiên bản OpenSSL khác nhau.
Kiểm tra bằng lệnh:
nginx -V
Ví dụ:
built with OpenSSL 3.0.13
Dòng này cho biết phiên bản OpenSSL mà Nginx thực sự đang sử dụng.
Xem thêm: Cách kiểm tra phiên bản TLS trên website
Cấu hình TLS 1.3 trên Nginx
Mở file Virtual Host hoặc file cấu hình SSL của Nginx.
Ví dụ:
/etc/nginx/conf.d/example.conf
Hoặc:
/etc/nginx/sites-enabled/example.conf
Thêm hoặc chỉnh sửa cấu hình:
ssl_protocols TLSv1.2 TLSv1.3;
Cấu hình này:
- Cho phép TLS 1.2.
- Cho phép TLS 1.3.
- Vô hiệu hóa TLS 1.0 và TLS 1.1.
Ví dụ đầy đủ:
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/ssl/certs/fullchain.pem;
ssl_certificate_key /etc/ssl/private/private.key;
ssl_protocols TLSv1.2 TLSv1.3;
}
Cấu hình Cipher Suite cho TLS 1.2
Đối với TLS 1.2, nên sử dụng các Cipher Suite mạnh.
Ví dụ:
ssl_ciphers HIGH:!aNULL:!MD5;
Hoặc:
ssl_ciphers
ECDHE-ECDSA-AES256-GCM-SHA384:
ECDHE-RSA-AES256-GCM-SHA384:
ECDHE-ECDSA-CHACHA20-POLY1305:
ECDHE-RSA-CHACHA20-POLY1305:
ECDHE-ECDSA-AES128-GCM-SHA256:
ECDHE-RSA-AES128-GCM-SHA256;
TLS 1.3 sử dụng bộ Cipher Suite riêng nên cấu hình này chủ yếu áp dụng cho TLS 1.2.
Xem thêm: Cipher Suite là gì?
Kiểm tra cấu hình Nginx
Sau khi chỉnh sửa:
nginx -t
Kết quả mong muốn:
syntax is ok
test is successful
Sau đó áp dụng cấu hình:
systemctl reload nginx
Việc reload sẽ không làm gián đoạn kết nối đang hoạt động.
Xem thêm: Cách gia hạn SSL không downtime
Cấu hình TLS 1.3 trên Apache
Đối với Apache, mở file Virtual Host SSL.
Ví dụ:
/etc/httpd/conf.d/ssl.conf
Hoặc:
/etc/apache2/sites-enabled/example.conf
Thêm cấu hình:
SSLProtocol TLSv1.2 TLSv1.3
Ví dụ đầy đủ:
ServerName example.com
SSLEngine on
SSLCertificateFile /etc/ssl/certs/certificate.crt
SSLCertificateKeyFile /etc/ssl/private/private.key
SSLCertificateChainFile /etc/ssl/certs/ca-bundle.crt
SSLProtocol TLSv1.2 TLSv1.3
Cấu hình này chỉ cho phép TLS 1.2 và TLS 1.3.
Cấu hình Cipher Suite trên Apache
Ví dụ:
SSLCipherSuite HIGH:!aNULL:!MD5
Hoặc:
SSLCipherSuite
ECDHE-ECDSA-AES256-GCM-SHA384:
ECDHE-RSA-AES256-GCM-SHA384:
ECDHE-ECDSA-CHACHA20-POLY1305:
ECDHE-RSA-CHACHA20-POLY1305:
ECDHE-ECDSA-AES128-GCM-SHA256:
ECDHE-RSA-AES128-GCM-SHA256
Điều này giúp loại bỏ các bộ mã hóa yếu hoặc lỗi thời.
Kiểm tra cấu hình Apache
Trên CentOS, AlmaLinux hoặc Rocky Linux:
apachectl configtest
Hoặc:
httpd -t
Nếu không có lỗi:
Syntax OK
Sau đó reload Apache:
systemctl reload httpd
Hoặc:
systemctl reload apache2
Tùy thuộc vào hệ điều hành.
Cách kiểm tra TLS 1.3 sau khi cấu hình
Sử dụng OpenSSL:
openssl s_client -tls1_3 -connect example.com:443
Nếu thành công:
Protocol : TLSv1.3
Điều này cho thấy TLS 1.3 đã được kích hoạt.
Ngoài ra có thể sử dụng SSL Labs để kiểm tra từ bên ngoài Internet.
Xem thêm: SSL Labs là gì?
Các lỗi thường gặp khi bật TLS 1.3
1. OpenSSL quá cũ
Đây là nguyên nhân phổ biến nhất.
Ví dụ:
OpenSSL 1.0.2
Phiên bản này không hỗ trợ TLS 1.3.
2. Nginx hoặc Apache quá cũ
Một số phiên bản cũ chưa tích hợp đầy đủ TLS 1.3.
3. Load Balancer đang xử lý SSL
Trong nhiều hệ thống:
User
│
▼
Load Balancer
│
▼
Web Server
Phiên bản TLS thực tế phụ thuộc vào Load Balancer chứ không phải Nginx hoặc Apache.
4. CDN đang Terminate SSL
Nếu website sử dụng CDN, kết nối TLS phía người dùng có thể được xử lý hoàn toàn tại CDN.
Do đó việc bật TLS 1.3 trên máy chủ gốc chưa chắc đã ảnh hưởng đến kết nối từ phía khách truy cập.
Xem thêm: TLS Termination là gì?
Có nên chỉ bật TLS 1.3 không?
Trong đa số trường hợp:
Không nên.
Mặc dù TLS 1.3 là phiên bản hiện đại nhất nhưng một số thiết bị hoặc phần mềm cũ vẫn chỉ hỗ trợ TLS 1.2.
Thông thường cấu hình phù hợp là:
TLSv1.2
TLSv1.3
Điều này giúp cân bằng giữa bảo mật và khả năng tương thích.
Xem thêm: Tại sao nên tắt TLS 1.0 và TLS 1.1?
Kết luận
Cấu hình TLS 1.3 trên Nginx và Apache là một trong những bước quan trọng để nâng cao bảo mật cho website hiện đại. Trước khi triển khai cần đảm bảo OpenSSL và máy chủ web hỗ trợ TLS 1.3, sau đó cấu hình chỉ cho phép TLS 1.2 và TLS 1.3 nhằm loại bỏ các giao thức lỗi thời. Sau khi hoàn tất, nên sử dụng OpenSSL hoặc SSL Labs để xác minh cấu hình hoạt động đúng và đảm bảo website đạt được mức bảo mật tối ưu cho môi trường production.
Bạn vẫn chưa biết nên chọn…?
Đừng lo lắng, đội ngũ chuyên gia của chúng tôi luôn sẵn sàng lắng nghe nhu cầu và tư vấn giải pháp bảo mật phù hợp nhất cho website và doanh nghiệp của bạn. Hãy liên hệ ngay để được hỗ trợ nhanh chóng, chính xác và hiệu quả.