证书链合并

浏览器报错的证书链的问题,我们一般会有三种证书:

  • RootCA.crt(rCA,被信任的根证书)
  • IntermediateCA.crt(mCA,某些厂商有多个中间证书)
  • server.crt(sCA,通过CSR签下来的证书)

某些厂商的rCA和mCA是需要用户自己下载的。为了让浏览器能够信任我们的证书,我们需要配置一条完整的证书链,证书链由sCA和mCA构成就好,rCA是浏览器内置,不需要服务器给提供。nginx配置证书链的时候,就是指定一个证书文件,这个文件中含有我们整个证书链的所有证书就好,证书合并的时候,

正确的合并方法: 是把 mCA 合并到 sCA 中。当有多个 mCA 文件时,mCA 从下级到上级(根证书为最上级)依次合并到 sCA 中。在这个过程中,rCA 被视为多余的文件。

# Combined Certificates

-----BEGIN CERTIFICATE-----
...... sCA ......
------END CERTIFICATE------

-----BEGIN CERTIFICATE-----
...... mCA (lower) ......
------END CERTIFICATE------

-----BEGIN CERTIFICATE-----
...... mCA (upper) ......
------END CERTIFICATE------

证书链的问题解决后,基本应该就可以正常工作了。

.crt服务器证书文件直接通过记事本打开,.cer中级证书也直接通过记事本打开,然后按照如上规则,将两个文件合并(服务器证书内容在最上面,中级证书内容在下面),最后直接使用合并后的文件即可,这样就不会再报中级证书(证书链)的问题了。

注:实际上.crt跟.cer证书文件内容一样,只是扩展名不同而已。

注:服务器证书包含.crt和.key文件

附证书链检测网站: https://csr.chinassl.net/ssl-checker.html

Leave a Reply

Your email address will not be published. Required fields are marked *