GoDaddy SSL 证书合并生成方法
2026-10-23 02:33:44
4 次阅读
0 个评论
GoDaddy SSL 证书压缩包解压出来有这些
certificate.crt
certificate.pem
cross.pem
intermediate.pem
root.pem
CSR.pem
PrivateKey.pem
正确的做法是拼成三级链:
# 域名证书 → 中间证书 → 交叉根证书
cat certificate.pem intermediate.pem cross.pem > fullchain.pem
原理就是:新系统认 R1 根,验证到中间就信任;老系统顺着 cross 找到 G2 根,也能完整验证通过,两边兼容。
如果只拼完三级链,执行 nginx -t 会报错:
PEM_read_bio_X509() failed: bad end line
cat 拼接的坑:很多证书文件最后一行末尾刚好缺一个换行符,拼接的时候前一个的 END CERTIFICATE 和下一个的 BEGIN CERTIFICATE 粘在了同一行,OpenSSL 识别不出边界。
解决办法也简单,用 awk 强制每个文件输出后补换行:
awk '1; END{print ""}' certificate.pem intermediate.pem cross.pem > fullchain.pem
拼完先用 openssl 验证一下格式没问题,再往 nginx 上挂:
openssl x509 -in fullchain.pem -noout -subject
最后总结
- Nginx 的 fullchain 永远是:叶子证书 + 中间证书 [+ 交叉证书],根证书绝对不要放进去,服务器下发根是违规行为
- 证书链顺序不能乱、不能跳级,必须从域名往根的方向一环扣一环,issuer 和 subject 必须完全对应
- cross.pem 不能直接代替 intermediate.pem,它是用来延伸信任链的,不是替换中间证书的
- 拼接证书尽量不要直接 cat,很容易出现粘行导致格式损坏,用 awk 更稳妥
- Chrome 正常不代表所有浏览器正常,尤其是国内浏览器兼容模式,调用的是系统证书库,坑很多
- 0回答
- 1粉丝
- 0关注