Nginx需将服务器证书和中间证书按序合并为fullchain.crt供ssl_certificate指令使用;服务器证书在前、中间证书在后,空一行分隔,不含私钥与根证书。

在 Nginx 中,要让浏览器正确验证服务器证书的可信链,必须将服务器证书和中间证书按顺序合并为一个完整的证书文件。根证书不需要包含在内,Nginx 不使用它,客户端会自行校验。
确认证书文件内容与顺序
合并前需确保:
- 服务器证书(如 your_domain.crt)在最上方,即第一份证书
- 中间证书(如 intermediate.crt)紧随其后,不能颠倒
- 每份证书以 -----BEGIN CERTIFICATE----- 开头、-----END CERTIFICATE----- 结尾,且之间**空一行**(非空格或制表符)
- 不要包含私钥(.key 文件),也不应混入根证书或 PEM 格式以外的内容
用 cat 命令合并(Linux/macOS)
执行以下命令生成完整证书链文件:
cat your_domain.crt intermediate.crt > fullchain.crt
验证是否合并成功:
openssl crl2pkcs7 -nocrl -certfile fullchain.crt | openssl pkcs7 -print_certs -noout
该命令会输出所有证书信息,应看到两段(或更多段)证书,第一段是你的域名证书,第二段是中间 CA 证书。
配置 Nginx 使用完整证书链
在 server 块中指定合并后的证书文件,私钥保持独立:
ssl_certificate /path/to/fullchain.crt;
ssl_certificate_key /path/to/your_domain.key;
⚠️ 注意:不要把私钥追加到 fullchain.crt 中,否则 Nginx 启动会失败(报错 “PEM_read_bio_PrivateKey failed”)。
验证证书链是否生效
重启 Nginx 后,用以下方式检查:
- 在线工具:访问 SSL Checker 输入域名,看是否显示 “Certificate chain is complete”
- 终端命令:openssl s_client -connect your_domain.com:443 -showcerts,观察输出中是否包含你预期的两级证书(服务器 + 中间)
- 浏览器地址栏点击锁图标 → 查看证书 → 证书路径,应能看到从站点证书到中间 CA 的完整层级


















