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

最后总结

  1. Nginx 的 fullchain 永远是:叶子证书 + 中间证书 [+ 交叉证书],根证书绝对不要放进去,服务器下发根是违规行为
  2. 证书链顺序不能乱、不能跳级,必须从域名往根的方向一环扣一环,issuer 和 subject 必须完全对应
  3. cross.pem 不能直接代替 intermediate.pem,它是用来延伸信任链的,不是替换中间证书的
  4. 拼接证书尽量不要直接 cat,很容易出现粘行导致格式损坏,用 awk 更稳妥
  5. Chrome 正常不代表所有浏览器正常,尤其是国内浏览器兼容模式,调用的是系统证书库,坑很多


请登录后回答。没有帐号?注册一个。