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

时间:2014-10-08 12:25:26

标签: ssl openssl ssl-certificate keystore keytool

将证书文件导入密钥库时出现此问题:

  

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

我执行此操作:

1)在服务器上创建我的密钥库:

keytool -genkey -keystore C:\keystore\keystore -alias jboss -keyalg RSA

2)我有domain.pfx并将其转换为此命令:

  • openssl pkcs12 -in domain.pfx -clcerts -nokeys -out domain.cer

  • openssl pkcs12 -in domain.pfx -nocerts -nodes -out domain_encrypted.key

  • openssl rsa -in domain_encrypted.key -out domain.key

现在我有3个新文件:

  • domain.cer
  • domain_encrypted.key
  • domain.key

3)最后,将domain.cer导入jboss别名中的C:\ keystore \ keystore:

keytool -import -alias jboss -keystore C:\keystore\keystore -file C:\cert\domain.cer

但我有这个错误:

  

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

有什么问题?

3 个答案:

答案 0 :(得分:0)

密钥库包含两种条目类型:

  1. 私钥输入(使用密钥库中导入的证书绑定存储在密钥库中的私钥。)此处,别名必须与创建密钥库文件时使用的别名保持一致。

  2. 可信条目: - 此条目包含所有可信证书条目,包括根证书和中间证书。

  3. 如果密钥库绑定到tomcat的server.xml文件中的域,则它必须包含私钥条目。

    现在,根据您执行的步骤,您首先创建了一个密钥库(在其中生成了私钥),然后您尝试在密钥库中导入证书。但是在命令中你没有使用你使用openssl转换的私钥;您使用了在生成密钥库时刚刚生成的私钥。

    如果你有domain.pfx,你可以使用下面的keytool命令直接转换它:

    keytool -importkeystore -srckeystore domain.pfx -srcstoretype pkcs12 -destkeystore name_of_the_keystore_file.jks -deststoretype jks
    

    注意:确保密钥库密码和密钥密码保持不变。

答案 1 :(得分:0)

更改别名名称,因为应该已经创建了另一个具有jboss别名的条目。 您可以通过执行-> keytool -list -v -keystore来查看信任库和别名。我相信它将解决。

答案 2 :(得分:-1)

我今天遇到了同样的问题。我通过在导入证书时使用不同的别名来解决它。因此,在导入证书时生成keystone和alias2时我有alias1。