Trả lời nhanh: Nginx TLS 1.3 HSTS chỉ nên được bật sau khi đã xác định principal, boundary và đường deny. Bài này đưa cấu hình/lệnh có thể chạy ở staging, cách kiểm tra output và điều kiện revoke/rollback; thay hostname, version và quyền bằng giá trị của hệ thống thật.
Phạm vi: Bài áp dụng cho Certificate chain trong môi trường staging/standalone. Kiểm tra Nginx/Docker/OS/database và phiên bản CLI thực tế trước khi chạy; không đưa credential thật vào lệnh, log hay artifact.

Tín hiệu cần đối chiếu: Certificate chain; protocol/cipher; HSTS preload cân nhắc; mối đe dọa; cấu hình/lệnh; output kỳ vọng; rollback/thu hồi
Certificate chain — thao tác và bằng chứng
Certificate chain quyết định trình duyệt có dựng được trust path hay không. Nginx phải trỏ ssl_certificate tới fullchain.pem (leaf trước, intermediate sau), còn ssl_certificate_key chỉ chứa private key. Đừng ghép root CA vào chain gửi cho client. Kiểm tra bằng openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt -untrusted intermediate.pem cert.pem và openssl s_client -connect example.test:443 -servername example.test -showcerts. Output kỳ vọng có Verify return code: 0 (ok); lỗi unable to get local issuer certificate hoặc depth=0 verify error:num=21 là thiếu intermediate, không phải lỗi cipher. Mối đe dọa ở đây là cấp nhầm chain hoặc private key sai cặp; cấu hình/lệnh phải được review cùng fingerprint. Giữ bản chain trước để rollback/thu hồi khi renewal tạo file hỏng. Mozilla SSL Configuration Generator
Sau khi thay chain, chạy nginx -t rồi reload một worker, curl –fail https://example.test/health và kiểm tra SAN/issuer bằng openssl x509 -noout -text. Ghi output kỳ vọng, exit code, thời điểm và digest file đã redact; không đưa private key vào log. Nếu client cũ báo certificate_unknown trong khi máy mới Verify return code=0, khoanh vùng trust store thay vì hạ TLS. Rollback/thu hồi là symlink về fullchain đã biết tốt, reload lại và theo dõi handshake errors; certificate cũ vẫn phải được giữ tới khi không còn kết nối dùng nó. (nginx-tls-1-3-hsts-ocsp-ssl-labs · outline 1)
protocol/cipher — thao tác và bằng chứng
Với protocol/cipher, bắt đầu bằng cấu hình tối thiểu: ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers off; và chỉ thêm nhóm cipher mà Nginx/OpenSSL phiên bản hiện tại hỗ trợ. TLS 1.3 không dùng danh sách cipher TLS 1.2 theo cùng cách, vì vậy đừng copy một chuỗi từ máy khác. Dùng openssl s_client -tls1_2 và -tls1_3 để kiểm tra từng nhánh, đồng thời thử một client không hỗ trợ TLS 1.2 để xác nhận bị từ chối. Output kỳ vọng ghi Protocol, Cipher và Verify return code. Mối đe dọa là bật TLS cũ hoặc cipher yếu để chữa lỗi tương thích; cấu hình/lệnh phải được gắn với phiên bản OpenSSL. Mozilla SSL Configuration Generator
Nếu handshake trả sslv3 alert handshake failure hoặc no protocols available, đó là error signature để kiểm tra protocol/cipher và SNI, không phải lý do tắt xác minh certificate. Ghi baseline tỷ lệ handshake lỗi và latency trước thay đổi. SSL Labs có thể cho điểm A nhưng không chứng minh origin app đúng; dùng kết quả như một lớp kiểm tra bên ngoài. Khi tỷ lệ lỗi vượt ngưỡng, rollback/thu hồi về cấu hình protocol trước, nginx -t, reload và xác minh cả TLS 1.2 lẫn 1.3 bằng hostname thật. (nginx-tls-1-3-hsts-ocsp-ssl-labs · outline 2)
HSTS preload cân nhắc — thao tác và bằng chứng
HSTS là header do trình duyệt ghi nhớ, không phải cơ chế mã hóa thay thế TLS. Chỉ gửi add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; sau khi mọi subdomain đã phục vụ HTTPS và redirect HTTP ổn định. Chưa thêm preload cho staging hoặc domain còn endpoint HTTP, vì preload khiến trình duyệt tự nâng cấp trước khi kết nối. Kiểm tra bằng curl -sSI https://example.test | rg -i strict-transport-security và ghi chính xác max-age, includeSubDomains, preload. Mối đe dọa là khóa nhầm hostname khiến endpoint legacy không truy cập được; cấu hình/lệnh và output kỳ vọng phải được review như một thay đổi sản phẩm. Mozilla SSL Configuration Generator
Đặt max-age nhỏ trên canary, quan sát mixed-content và redirect trong một chu kỳ trước khi tăng lên một năm. Nếu thấy lỗi, có thể bỏ header nhưng client đã nhận max-age vẫn giữ chính sách đến khi hết hạn; đó là giới hạn rollback/thu hồi quan trọng. Không tuyên bố HSTS bảo vệ API nếu certificate chain hoặc protocol/cipher còn lỗi. Lưu curl output, thời điểm bật/tắt và danh sách subdomain; khi rollback, phục hồi config Nginx nhưng thông báo owner rằng cache HSTS của người dùng không biến mất ngay. (nginx-tls-1-3-hsts-ocsp-ssl-labs · outline 3)

OCSP stapling — thao tác và bằng chứng
OCSP stapling để Nginx gửi sẵn phản hồi trạng thái certificate, giảm việc client tự gọi CA. Cấu hình cần ssl_stapling on; ssl_stapling_verify on; ssl_trusted_certificate /etc/ssl/certs/ca-certificates.crt; và resolver DNS có thể truy cập OCSP responder. Sau nginx -t && systemctl reload nginx, chạy printf '' | openssl s_client -connect example.test:443 -servername example.test -status. Output kỳ vọng gồm OCSP Response Status: successful, Cert Status: good và Verify return code: 0. Nếu thấy OCSP response: no response sent, kiểm tra issuer chain, resolver và outbound firewall. Mối đe dọa là tin vào stapling dù chain sai; cấu hình/lệnh, output kỳ vọng và rollback/thu hồi phải được lưu cùng fingerprint. Mozilla SSL Configuration Generator
Theo dõi tuổi OCSP response và thời điểm nextUpdate trong log/metric, không chỉ cờ bật. Một số CA không hỗ trợ stapling ổn định; khi đó tắt stapling có kiểm soát còn hơn gửi response cũ. Nếu reload làm tăng handshake error, rollback/thu hồi về config trước, giữ certificate và log responder để điều tra. SSL Labs cảnh báo OCSP không thay thế kiểm tra revocation ở mọi client; ghi rõ giới hạn này trong runbook và không dùng điểm số như bằng chứng duy nhất. (nginx-tls-1-3-hsts-ocsp-ssl-labs · outline 4)
renewal — thao tác và bằng chứng
Renewal phải tạo certificate mới, kiểm tra chain rồi reload graceful, không restart Nginx làm rơi kết nối. Chạy certbot renew –dry-run để thử ACME staging; kiểm tra systemctl list-timers certbot.timer và ngày hết hạn bằng openssl x509 -enddate -noout -in /etc/letsencrypt/live/example.test/fullchain.pem. Dùng deploy-hook gọi nginx -t && systemctl reload nginx chỉ sau khi file mới tồn tại. Output kỳ vọng là dry-run success, expiry còn trên 14 ngày và reload exit=0. Lỗi Challenge failed, unauthorized hoặc permission denied phải dừng rollout; mối đe dọa thường là DNS-01/HTTP-01 trỏ sai hoặc symlink live bị đổi giữa lúc reload. Mozilla SSL Configuration Generator
Giữ certificate cũ trong khoảng overlap và lưu journalctl -u certbot, config hash, issuer, serial đã redact. Không xóa /etc/letsencrypt/archive để chữa disk khi chưa có backup. Nếu renewal tạo chain không hợp lệ, rollback/thu hồi bằng symlink về bản trước, nginx -t, reload và xác minh openssl s_client; sau đó sửa challenge. Khi private key bị lộ trong log hoặc artifact, revoke/rotate với CA/provider trước khi chạy lại timer. (nginx-tls-1-3-hsts-ocsp-ssl-labs · outline 5)
`openssl s_client` — thao tác và bằng chứng
Phần `openssl s_client` của Nginx TLS bắt đầu bằng mối đe dọa trong nginx-tls-1-3-hsts-ocsp-ssl-labs: dữ liệu nào bị đọc/sửa, principal nào cần quyền và boundary nào có thể bị vượt. Bằng chứng version, scope, evidence phải đứng cạnh cấu hình/lệnh để người vận hành đối chiếu; không dùng tuyên bố an toàn tuyệt đối. Nêu cả đường allow và deny vì policy đúng cú pháp vẫn có thể mở nhầm cổng hoặc để credential trong image layer. Mozilla SSL Configuration Generator
Trong nginx-tls-1-3-hsts-ocsp-ssl-labs, thử bằng tài khoản và dữ liệu giả trên staging, ghi version, config hash, output kỳ vọng, stderr và audit log đã redact. Nếu quyền thừa, rotate/revoke trước cleanup. Điều kiện rollback/thu hồi của `openssl s_client` phải có owner, thời điểm và artifact giữ lại. (nginx-tls-1-3-hsts-ocsp-ssl-labs · outline 6)
rollback — thao tác và bằng chứng
Rollback TLS phải theo lớp: nếu nginx -t fail thì Nginx thường giữ config cũ; nếu reload đã nhận config nhưng client lỗi, khôi phục file include/certificate symlink trước, chạy nginx -t rồi reload graceful. Giữ master PID, access/error log, handshake error rate và output SSL Labs trước-sau. Mốc dừng nên là Verify return code khác 0, OCSP response stale, 5xx tăng hoặc một nhóm client hợp lệ không handshake được. Mối đe dọa lớn nhất là rollback về image/certificate đã chứa private key bị lộ; credential phải revoke/rotate, không chỉ đổi tên file. Ghi owner, thời điểm và artifact trong incident. Mozilla SSL Configuration Generator
HSTS là ngoại lệ: bỏ header không xóa ngay chính sách đã cache ở trình duyệt, và preload có thể cần quy trình gỡ riêng. Vì vậy chỉ bật max-age dài sau khi chain, protocol/cipher, OCSP, renewal và SSL Labs đều đạt trên canary. Sau rollback/thu hồi, chạy lại nginx -t, openssl s_client -status, curl -I và endpoint health; theo dõi một cửa sổ đủ dài rồi mới dọn certificate cũ. Báo rõ giới hạn tương thích thay vì hứa zero downtime tuyệt đối. (nginx-tls-1-3-hsts-ocsp-ssl-labs · outline 7)
Recipe lệnh/config cho nginx-tls-1-3-hsts-ocsp-ssl-labs
Chạy ở staging cho Nginx TLS 1.3 HSTS với hostname, path và digest đã thay bằng giá trị không nhạy cảm. Lưu exit code cùng stdout/stderr đã redact và gắn artifact với nginx-tls-1-3-hsts-ocsp-ssl-labs.
ssl_protocols TLSv1.2 TLSv1.3;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=31536000" always;
nginx -t && systemctl reload nginx
openssl s_client -connect techsysad.com:443 -servername techsysad.com -tls1_3 -status </dev/null
Expected output và error signature — nginx-tls-1-3-hsts-ocsp-ssl-labs
nginx -t successful, TLSv1.3 và Verify return code=0; unknown directive hoặc thiếu chain là lỗi. Đối chiếu thêm version, timestamp, health/readiness và log liên quan; output minh họa không phải kết quả production.

Rollback và stop boundary của nginx-tls-1-3-hsts-ocsp-ssl-labs
Dừng promote nginx-tls-1-3-hsts-ocsp-ssl-labs khi quyền deny/allow hoặc audit không khớp threat model. Revoke/rotate credential đã lộ, giữ config hash và log, rồi khôi phục revision được owner xác nhận.
Failure mode cần tránh ở Certificate chain
- Certificate chain: thay đổi nhiều biến cùng lúc nên không biết nguyên nhân.
- Certificate chain: đọc exit code nhưng bỏ qua health, dependency hoặc error signature.
- Certificate chain: lưu secret/PII trong log, image layer, backup hoặc ảnh chụp.
- Certificate chain: rollback nhầm failure domain làm blast radius lớn hơn.
Đọc tiếp trong cùng cụm Linux/DevOps — nginx-tls-1-3-hsts-ocsp-ssl-labs
nginx reverse proxy docker services ssl letsencrypt 2026 và ssl free toan tap
Nguồn chính thức cho nginx-tls-1-3-hsts-ocsp-ssl-labs
Mozilla SSL Configuration Generator; NGINX—SSL termination
FAQ theo đúng chủ đề Nginx TLS 1.3 HSTS
Certificate chain áp dụng cho phiên bản nào?
Kiểm tra version/tool và topology trước khi áp dụng Certificate chain. Chạy recipe ở trên trong staging; nếu expected/error signature khác, dừng và cập nhật runbook thay vì copy nguyên lệnh.
protocol/cipher áp dụng cho phiên bản nào?
Kiểm tra version/tool và topology trước khi áp dụng protocol/cipher. Chạy recipe ở trên trong staging; nếu expected/error signature khác, dừng và cập nhật runbook thay vì copy nguyên lệnh.
HSTS preload cân nhắc áp dụng cho phiên bản nào?
Kiểm tra version/tool và topology trước khi áp dụng HSTS preload cân nhắc. Chạy recipe ở trên trong staging; nếu expected/error signature khác, dừng và cập nhật runbook thay vì copy nguyên lệnh.
OCSP stapling áp dụng cho phiên bản nào?
Kiểm tra version/tool và topology trước khi áp dụng OCSP stapling. Chạy recipe ở trên trong staging; nếu expected/error signature khác, dừng và cập nhật runbook thay vì copy nguyên lệnh.
Cập nhật nginx-tls-1-3-hsts-ocsp-ssl-labs: 08/09/2026. Nội dung là runbook tham khảo; phải kiểm tra phiên bản, nguồn chính thức và rollback trong môi trường thật trước khi áp dụng. Safety boundary: Không thay thế tư vấn chuyên môn; kiểm tra tình huống thực tế trước khi áp dụng.
