Nginx 通過ssl_trusted_certificate正確補全中間證書
在 Nginx 配置 HTTPS 時,使用 ssl_trusted_certificate 指令可以指定受信任的 CA 證書鏈,用于驗證客戶端證書或 OCSP Stapling 等功能。正確補全中間證書鏈是確保 SSL/TLS 連接兼容性和安全性的關(guān)鍵。
核心概念
| 證書類型 | 說明 |
|---|---|
| 服務(wù)器證書 (End-entity) | 你的域名證書,由 CA 簽發(fā) |
| 中間證書 (Intermediate) | 連接服務(wù)器證書和根證書的橋梁 |
| 根證書 (Root) | 自簽名的頂級 CA 證書,預(yù)裝在系統(tǒng)信任庫 |
為什么 ssl_trusted_certificate 不解決“鏈不完整”警告
這個指令的作用對象是 Nginx 本身,不是瀏覽器:
- ssl_certificate:Nginx 在 TLS 握手時發(fā)給客戶端的證書列表。必須含域名證書 + 所有中間證書(不含根證書)。
- ssl_trusted_certificate:僅供 Nginx 內(nèi)部使用,例如驗證 OCSP 響應(yīng)簽名或校驗雙向 TLS 中客戶端證書。它不會被發(fā)給瀏覽器,對修復(fù)“NET::ERR_CERT_AUTHORITY_INVALID”無效。
正確做法:確保 ssl_certificate 指向 fullchain 文件
所有修復(fù)動作都圍繞一個核心——讓 ssl_certificate 的值指向一個拼接好的 PEM 文件,內(nèi)容順序嚴格為:
- 你的域名證書(
example.com.crt) - 緊接著是中間證書(如
intermediate.crt;若有多級,按信任路徑從近到遠追加) - 不要包含根證書(Root CA)
正確配置方式
1. 合并證書鏈文件
將服務(wù)器證書和中間證書按順序合并到一個文件(服務(wù)器證書在前,中間證書在后):
# 正確的順序:服務(wù)器證書 → 中間證書1 → 中間證書2(如有) cat your_domain.crt intermediate.crt > fullchain.crt
或使用證書商提供的 fullchain.pem 文件。
2. Nginx 配置
server {
listen 443 ssl http2;
server_name example.com;
# 服務(wù)器證書 + 中間證書(合并后的完整鏈)
ssl_certificate /etc/nginx/ssl/fullchain.crt;
ssl_certificate_key /etc/nginx/ssl/private.key;
# 受信任的 CA 證書(用于驗證客戶端證書或 OCSP)
ssl_trusted_certificate /etc/nginx/ssl/chain.pem;
# OCSP Stapling(需要 ssl_trusted_certificate 支持)
ssl_stapling on;
ssl_stapling_verify on;
# 其他 SSL 配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
}關(guān)鍵指令詳解
| 指令 | 用途 | 文件內(nèi)容 |
|---|---|---|
| ssl_certificate | 向客戶端展示的服務(wù)器證書鏈 | 服務(wù)器證書 + 中間證書(必須完整) |
| ssl_certificate_key | 服務(wù)器證書的私鑰 | 私鑰文件(.key 或 .pem) |
| ssl_trusted_certificate | 驗證客戶端證書或 OCSP 響應(yīng)的受信 CA | 中間證書 + 根證書(通常不含服務(wù)器證書) |
驗證證書鏈完整性
方法一:OpenSSL 命令行
# 檢查證書鏈是否完整(應(yīng)顯示 0 errors, 0 warnings) openssl verify -CAfile /etc/nginx/ssl/chain.pem /etc/nginx/ssl/fullchain.crt # 檢查 Nginx 實際提供的證書鏈 echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -text -noout # 查看完整證書鏈 echo | openssl s_client -connect example.com:443 -servername example.com -showcerts
方法二:在線檢測工具
常見問題排查
問題 1:證書鏈不完整("Certificate chain incomplete")
癥狀:Android 舊設(shè)備或 Java 客戶端無法連接。
解決:確保 ssl_certificate 包含完整鏈:
# 下載證書商提供的中間證書,合并到 fullchain cat your_domain.crt ca_intermediate.crt > fullchain.crt
問題 2:OCSP Stapling 失敗
癥狀:ssl_stapling on 但 OCSP 狀態(tài)為 No response sent。
解決:ssl_trusted_certificate 必須包含簽發(fā)你證書的 CA 的完整鏈:
# 從證書中提取并保存中間證書 openssl crl2pkcs7 -nocrl -certfile fullchain.crt | openssl pkcs7 -print_certs -out chain.pem
問題 3:順序錯誤
錯誤順序(中間證書在前)會導(dǎo)致握手失敗:
# ? 錯誤:不要這樣合并 cat intermediate.crt your_domain.crt > wrong.crt
最佳實踐配置模板
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
# 證書配置
ssl_certificate /etc/nginx/ssl/fullchain.pem; # 證書+中間證書
ssl_certificate_key /etc/nginx/ssl/privkey.pem; # 私鑰
# 受信 CA 鏈(用于 OCSP 和客戶端驗證)
ssl_trusted_certificate /etc/nginx/ssl/chain.pem;
# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# 現(xiàn)代 SSL 配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
# 會話緩存
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
}配置完成后,務(wù)必使用 nginx -t 測試配置,并重啟 Nginx 使配置生效。
到此這篇關(guān)于Nginx 通過ssl_trusted_certificate正確補全中間證書的文章就介紹到這了,更多相關(guān)Nginx ssl_trusted_certificate補全中間證書內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx Proxy Manager輕松搭建反向代理的實現(xiàn)
NginxProxyManager是一款開源的反向代理和SSL證書管理工具,本文主要介紹了Nginx Proxy Manager輕松搭建反向代理的實現(xiàn),感興趣的可以了解一下2025-02-02
Nginx三種不同類型的虛擬主機的配置(基于域名、IP 和端口)
本文主要介紹了Nginx多種虛擬主機配置方式,能夠根據(jù)域名、IP 或端口區(qū)分不同的站點,本文就來介紹一下,感興趣的可以了解一下2025-04-04
Nginx 實現(xiàn) TCP/DUP流量按 IP 動態(tài)轉(zhuǎn)發(fā)操作方法
為優(yōu)化網(wǎng)絡(luò)性能和提升服務(wù)可用性,通過Nginx配置stream模塊根據(jù)客戶端IP地址動態(tài)轉(zhuǎn)發(fā)TCP請求至不同后端服務(wù)器節(jié)點,適用于數(shù)據(jù)庫代理、TCP服務(wù)負載均衡及地域或來源IP分流的流量調(diào)度等場景,本文給大家介紹Nginx 實現(xiàn) TCP/DUP流量按 IP 動態(tài)轉(zhuǎn)發(fā)的操作2024-10-10
Nginx設(shè)置響應(yīng)超時配置的實現(xiàn)
本文詳細介紹了如何查找和修改Nginx的配置文件,包括全局配置文件、站點配置文件、包含文件的查找,以及客戶端超時設(shè)置、代理超時設(shè)置、FastCGI超時設(shè)置的修改方法,最后還介紹了如何在Linux系統(tǒng)中重啟Nginx服務(wù),通過這些步驟,可以有效提高Nginx的性能和穩(wěn)定性2024-10-10
Nginx搭建支持WebDAV協(xié)議的私有云存儲網(wǎng)關(guān)的實現(xiàn)步驟
本文主要介紹了Nginx搭建支持WebDAV協(xié)議的私有云存儲網(wǎng)關(guān)的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2026-04-04

