为了扩展 Boan 的评论,您的证书链格式不正确。
您只是发送最终实体(服务器)证书;并且您需要发送 Comodo 所需的最终实体证书和两个中间证书。
您需要发送中间证书以避免"which directory" problem。它在 PKI 中是一个众所周知的问题。这就是客户正在经历的——他们不知道去哪里获取丢失的中间证书。
检查方法如下:
$ openssl s_client -connect naturalvape.us:443 -showcerts
CONNECTED(00000003)
depth=0 OU = Domain Control Validated, OU = PositiveSSL, CN = naturalvape.us
verify error:num=20:unable to get local issuer certificate
verify return:1
...
---
Certificate chain
0 s:/OU=Domain Control Validated/OU=PositiveSSL/CN=naturalvape.us
i:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Domain Validation Secure Server CA
-----BEGIN CERTIFICATE-----
MIIFUDCCBDigAwIBAgIRAOIeCA8uCx0hLc8AQSHiak8wDQYJKoZIhvcNAQELBQAw
gZAxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO
...
t3d8prtVxlUd9xp0AEXPOLI1uKQlDKNCOQlHFrINkZbwwg6hmomiFXx5IpfVSb9U
XIqr/cZP7xtD2oiYCJ2giJ7dHLU=
-----END CERTIFICATE-----
---
Server certificate
subject=/OU=Domain Control Validated/OU=PositiveSSL/CN=naturalvape.us
issuer=/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Domain Validation Secure Server CA
---
No client certificate CA names sent
---
...
请注意,存在一个主题为 CN=naturalvape.us 的证书(主题是显示中的“s:”)。颁发者是CN=COMODO RSA Domain Validation Secure Server CA,但缺少中间证书(颁发者是显示中的“i:”部分)。
要解决此问题,您需要从 [Intermediate #2 (SHA-2)] Comodo RSA Domain Validation Secure Server CA 获取 COMODO RSA 域验证安全服务器 CA。
中间证书已经 PEM 编码。获取您的服务器证书,并附加 COMODO RSA 域验证安全服务器 CA 中间体。这意味着文件中将有两个证书。它们看起来像:
-----BEGIN CERTIFICATE-----
<server certificate>
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
<intermediate certificate>
-----END CERTIFICATE-----
在服务器证书下将其插入您的站点。
不幸的是,仅添加 COMODO RSA 域验证安全服务器 CA 是不够的。您还需要添加 COMODO RSA 证书颁发机构。它的另一个缺少的中间证书。您可以从[Intermediate #1 (SHA-2)] COMODO RSA Certification Authority 获得COMODO RSA 证书颁发机构。
所以它们看起来像:
-----BEGIN CERTIFICATE-----
<end entity/server certificate>
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
<intermediate certificate #2>
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
<intermediate certificate #1>
-----END CERTIFICATE-----
用户(依赖方)仍然需要拥有/信任最后一个缺失中间体的发行者(最后一个缺失中间体是COMODO RSA Domain Validation Secure服务器 CA)。最后一个缺少的中间体的发行者是CN=AddTrust External CA Root,它应该内置于浏览器或其中一个cacerts.pem 包中。
将缺少的两个中间证书与服务器证书连接(并上传)后,您可以进行如下测试。
首先,下载信任锚。它的CN=AddTrust External CA Root,可以在[KMCS] AddTrust External CA Root找到。
其次,运行openssl s_client 进行验证。注意添加了CAfile 选项和“验证结果OK (0)”。
$ openssl s_client -connect naturalvape.us:443 -CAfile addtrustexternalcaroot_kmod.crt
CONNECTED(00000003)
...
Start Time: 1407558078
Timeout : 300 (sec)
Verify return code: 0 (OK)