我有4个这样的证书文件:
1.certum_certificate.crt
2.certum_certificate.pem
3.Intermediate_CA2.cer
4.Intermediate_CA.cer
5.Root_CA.cer
我将这些文件内容按此顺序放入捆绑文件中,我发现我的 SSL 链不完整。
我应该如何将它们排列在捆绑文件中?
只需将这三个部分连接成一个文件,如下所示 (
fullchain.pem
) :
-----BEGIN CERTIFICATE-----
MIIFKTCCBBGgAwIBAgISA/UUyBjJ71fucZuvpiLsdfsfsdfsdfd
...
hoFWWJt3/SeBKn+ci03RRvZsdfdsfsdfw=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFFjCCAv6gAwIBAgIRAJErCErPDBinsdfsfsdfsdfdsfsdfsd
....
nLRbwHqsdqD7hHwg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFYDCCBsdfSDFSDFVSDVzfsdffvqdsfgsT664ScbvsfGDGSDV
...
Dfvp7OOGAN6dEOM4+SDFSDZET+DFGDFQSD45Bddfghqsqf6Bsff
-----END CERTIFICATE-----
顺序必须倒着。发件人的证书必须位于列表中的第一位。以下每个证书必须直接证明其前一个证书:
Original issuer —> Intermediate issuer 1 —> Final Root issuer
,这是根证书颁发机构,可以信任。
可以有多个中间体:
...—> Intermediate issuer 1 —> Intermediate issuer 2 —>...
为了形成证书链,您需要知道您的证书在链中的信任顺序。
只需将各个证书的内容按照正确的顺序附加即可形成单个证书链文件。 链的顺序从您的服务器证书开始,然后是中间证书,最后是根证书。
例如,我们有以下证书颁发者链
那么链证书文件的内容应该是这样的:
-----BEGIN CERTIFICATE-----
[Server Certificate]
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
[Intermediate certificate L1]
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
[Intermediate certificate L2]
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
[Root Certificate]
-----END CERTIFICATE-----
回到你的问题,我假设你的证书颁发链顺序是
certum_certificate <--(Issued by)-- Intermediate_CA <--(Issued by)-- Intermediate_CA2 <--(Issued by)-- Root_CA
那么您的订单是
(certum_certificate.crt content)
(Intermediate_CA.cer content)
(Intermediate_CA2.cer content)
(Root_CA.cer content)
如果您的证书文件名全部混淆并且您不确定颁发顺序,只需使用
openssl
查看证书即可显示该证书的 issuer。
例如
openssl x509 -noout -text -in '委托证书颁发机构 - L1K.crt'
我们可以推断这个
Entrust Certification Authority - L1K
证书是由Entrust Root Certification Authority - G2
颁发的。