将中间证书添加到 pkcs12 文件...
以下是我在网络和邮件服务器上执行此操作的方法。
First, www-example-com.crt
是 Startcom 签署的 Web 服务器证书。 Startcom 提供免费的 1 类证书,我最信任的浏览器和移动设备,因此我使用它们。证书为 PEM 格式(----- BEGIN CERT -----
and ----- END CERT -----
).
二、我打开www-example-com.crt
并附加 Startcom 的 1 级中级。我从 Startcom 获得中间体索引/证书 https://www.startssl.com/certs/。现在我的www-example-com.crt
其中有两个 PEM 编码的编码证书。
第三,我执行以下操作来创建一个 PKCS12/PFX 文件以在 IIS 中使用。
openssl pkcs12 -export -in www-example-com.crt -inkey www.example.key -out www-example-com.p12
就你而言,你的www-example-com.crt
其中至少包含三个 PEM 编码的证书:
----- BEGIN CERT -----
< My JBoss Certificate >
----- END CERT -----
----- BEGIN CERT -----
< My Issuing CA >
----- END CERT -----
----- BEGIN CERT -----
< My CA >
----- END CERT -----
链中的第三个证书 -My CA
- 是可选的。如果您的客户使用,则不需要它My CA
作为信任锚。如果您是客户使用Entrust
作为信任锚,那么您需要将其包含在内。
If you cat
your www-example-com.crt
确实如此NOT有多个证书,则不要继续。不执行openssl pkcs12
直到您的服务器证书拥有验证链所需的所有中间证书。
请勿包含 Entrust CA 证书。
我怀疑 Entrust 直接与他们的 CA 签署。他们可能也使用中间体。所以你的证书链可能应该是这样的:
----- BEGIN CERT -----
< My JBoss Certificate >
----- END CERT -----
----- BEGIN CERT -----
< My Issuing CA >
----- END CERT -----
----- BEGIN CERT -----
< My CA >
----- END CERT -----
----- BEGIN CERT -----
< Entrust Intermediate >
----- END CERT -----
Entrusts 提供其 CA 和中间证书:委托根证书 https://www.entrust.net/downloads/root_request.cfm。我无法告诉您您需要哪一个,因为您不会提供 URL 或向我们展示您拥有的链条。但我猜它会是以下一项或多项:
- Entrust L1E链证书
- 委托L1C链证书
- Entrust L1E链证书(SHA2)
- Entrust L1C链证书(SHA2)
您可以使用 OpenSSL `s_client 测试您的链。这次,您将使用 Entrust 证书:
echo -e "GET / HTTP/1.0\r\n" | openssl s_client -connect myserver:8443 \
-CAfile entrust-ca.pem
你可以得到entrust-ca.pem
from 委托根证书 https://www.entrust.net/downloads/root_request.cfm。运行它并告诉我们您遇到了什么错误。或者更好的是,将 URL 发布到您的服务器,以便我们可以看到发生了什么。