【发布时间】:2017-12-26 13:19:08
【问题描述】:
我需要使用我的自签名证书链创建一个 .keystore 文件。
我尝试了两种方法。
方法一:
https://blog.didierstevens.com/2008/12/30/howto-make-your-own-cert-with-openssl/
我使用上述帖子创建了我的自签名证书链。我将 .crt 转换为 .p7b 并尝试创建密钥库文件,但在 OpenSSL 中出现“输入不是 X.509 证书”。
我正在使用 Windows 机器。于是我打开 .crt 文件,点击“复制到文件”并将其保存为 .p7b 文件。
方法二:
https://www.pixelstech.net/article/1450354633-Using-keytool-to-create-certificate-chain
我使用上面的帖子创建了带有证书链的密钥库,但是当我将它添加到 时,我的浏览器中出现“无法访问此站点”错误,并且日志中没有错误。
我的连接器如下:
<Connector SSLEnabled="true" acceptCount="100" clientAuth="false" connectionTimeout="20000" debug="0" disableUploadTimeout="true" enableLookups="false" keystoreFile="test.keystore" keystorePass="test" maxSpareThreads="75" maxThreads="150" minSpareThreads="25" name="SSL" port="9372" scheme="https" secure="true" sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2" sslProtocol="TLS"/>
如果密钥库文件只有一个证书,则上述连接器可以工作。因此,问题在于生成密钥库的过程。
如何成功地将证书链添加到我的密钥库?
编辑:
<Connector SSLEnabled="true" acceptCount="100" clientAuth="false" connectionTimeout="20000" debug="0" disableUploadTimeout="true" enableLookups="false" keystoreFile="test.p12" keystorePass="test" keystoreType="PKCS12" maxSpareThreads="75" maxThreads="150" minSpareThreads="25" name="SSL" port="9372" scheme="https" secure="true" sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2" sslProtocol="TLS"/>
我将密钥库的格式从 .keystore 修改为 .p12。我的应用程序现在运行,但“Didier Stevens 代码签名 (https://DidierStevens.com)”的状态显示“此证书正常”。而“Didier Stevens(https://DidierStevens.com)”的状态显示“此 CA 根证书不受信任,因为它不在受信任的根证书颁发机构存储中。”。应该是相反的,但不知道是什么问题。
【问题讨论】:
-
CN=www.example.com可能是错误的。https://肯定是错的。主机名始终位于 SAN 中。如果它出现在 CN 中,那么它也必须出现在 SAN 中(在这种情况下您必须列出两次)。有关更多规则和原因,请参阅 How do you sign Certificate Signing Request with your Certification Authority 和 How to create a self-signed certificate with openssl? 您还需要将自签名证书放在适当的信任库中。
标签: tomcat ssl certificate keytool pkix