将公共证书导入密钥库时出错

Dan*_*lin 9 java certificate keystore keytool ssl-certificate

我有CA的公共证书.我想使用此证书创建Java SSL连接.我提到如何在特定连接上使用不同的证书?使用自签名证书不复制完整的密钥存储到客户端的Java SSL连接.据我所知,我需要将证书导入密钥库.但是我还没有从CA收到任何密钥库.我创建了一个密钥库,并尝试将公共证书导入其中.但后来我收到以下错误:

keytool错误:java.lang.Exception:回复中的公钥和密钥库不匹配

我是否需要CA的密钥库或我做错了什么?


用于创建密钥库的命令:

keytool -genkey -alias tomcat -keyalg RSA -keystore keystore.jks
Run Code Online (Sandbox Code Playgroud)

用于导入证书的命令:

keytool -import -v -alias tomcat -file signed-cert.pem -keystore keystore.jks
Run Code Online (Sandbox Code Playgroud)

小智 6

我认为你没有正确遵循证书登录过程.查看此讨论https://forums.oracle.com/thread/1533940,按照以下步骤正确实施它们:

  1. 创建一个密钥库 keytool -genkey -keyalg RSA -keystore test.keystore -validity 360 (这会生成一个密钥库和一个别名为"mykey"的密钥(DC))

  2. 创建证书签名请求(CSR). keytool -certreq -keyalg RSA -file test.csr -keystore test.keystore (这会生成一个文本CSR文件)

  3. 已签署证书:http://www.instantssl.com/ssl-certificate-support/csr_generation/ssl-certificate-index.html

  4. 导入签名证书(如果粘贴步骤3中签名的证书,请注意CRLF) keytool -import -alias newkey -file <signed cert file> -keystore test.keystore (?重要的是,它的别名与步骤1不同(默认为"mykey")?

  5. 导出公钥用于客户端使用 keytool -export -alias mykey -file test.publickey -keystore test.keystore

在服务器系统上

  1. 创建一个信任 keytool -genkey -keyalg RSA -keystore test.truststore -validity 360 库(这会生成一个密钥库和一个别名为"mykey"的密钥(DC))

  2. 导入公钥 - 用于通过客户端测试SSL SOAP服务 keytool -import -file test.publickey -keystore test.truststore

问题是让步骤1和6中的别名默认为"mykey".当我改变第6步时: keytool -genkey -alias testAlias -keyalg RSA -keystore test.truststore -validity 360

您可以使用上面的步骤7导入(虽然我-alias apublickey在步骤7中添加了" ").这对我有用.