【问题标题】:How can I create keystore from an existing certificate (abc.crt) and abc.key files?如何从现有证书 (abc.crt) 和 abc.key 文件创建密钥库?
【发布时间】:2012-08-14 12:27:23
【问题描述】:

我正在尝试将证书和密钥文件导入密钥库,但我无法做到。

如何通过导入现有证书 (abc.crt) 和 abc.key 文件来创建密钥库?

【问题讨论】:

    标签: ssl keytool


    【解决方案1】:

    最简单的可能是使用 OpenSSL 创建一个 PKCS#12 文件:

    openssl pkcs12 -export -in abc.crt -inkey abc.key -out abc.p12
    

    您应该能够使用PKCS12 密钥库类型直接使用生成的文件。

    如果您确实需要,可以使用 keytool -importkeystore 将其转换为 JKS(在 Java 6 中的 keytool 中可用):

    keytool -importkeystore -srckeystore abc.p12 \
            -srcstoretype PKCS12 \
            -destkeystore abc.jks \
            -deststoretype JKS
    

    【讨论】:

    • 谢谢 Bruno,你能告诉我从哪里可以获得 openssl 实用程序吗?
    • 这里还有一个问题,生成的密钥库平台是否特定?意味着如果我在 Windows 中创建密钥库并在 unix 中使用它会起作用吗?
    • 生成的密钥库与平台无关。 OSX 和大多数 Linux 发行版都应该附带 OpenSSL(否则,只需安装软件包)。也有适用于 Windows 的二进制文件(例如,here,尽管您也可以找到其他地方。)
    • 我还应该指出,对于 PKCS12 密钥库,密钥密码与商店的密码相同(而对于其他类型的商店,它们可能不同,尤其是 JKS)。
    • @HenningMakholm,您的私钥文件可能没有密码保护,您必须在创建 PKCS#12 文件时设置一个。
    【解决方案2】:

    您必须使用 OpenSSL 和 keytool。

    用于 CER 和 PVK 文件的 OpenSSL > P12

    openssl pkcs12 -export -name servercert -in selfsignedcert.crt -inkey serverprivatekey.key -out myp12keystore.p12

    p12 的 Keytool > JKS

    keytool -importkeystore -destkeystore mykeystore.jks -srckeystore myp12keystore.p12 -srcstoretype pkcs12 -alias servercert

    【讨论】:

    • 私钥在哪里?
    • 这就是我不明白的!
    • 这与之前的其他答案有何不同??
    • 谢谢。我有 s pkcs #7 证书。我应该使用 pkcs12 还是 7 ?
    • 请注意我们传递的选项 -name(对于 PKCS)-alias(对于 Jks)。
    【解决方案3】:

    添加到@MK Yung 和@Bruno 的答案.. 请输入目标密钥库的密码。当我在没有密码的情况下输入命令时,我看到我的控制台挂起。

    openssl pkcs12 -export -in abc.crt -inkey abc.key -out abc.p12 -name localhost  -passout pass:changeit
    

    【讨论】:

      【解决方案4】:

      除了@Bruno 的回答,还需要提供-name 作为别名,否则Tomcat 会抛出Alias name tomcat does not identify a key entry 错误

      示例命令: openssl pkcs12 -export -in localhost.crt -inkey localhost.key -out localhost.p12 -name localhost

      【讨论】:

        【解决方案5】:

        如果密钥库是用于 tomcat 的,那么在使用上述答案创建密钥库之后,您必须添加最后一步来为密钥创建“tomcat”别名:

        keytool -changealias -alias "1" -destalias "tomcat" -keystore keystore-file.jks
        

        您可以通过以下方式检查结果:

        keytool -list -keystore keystore-file.jks -v
        

        【讨论】:

          【解决方案6】:

          理想情况下,您应该收到 3 个文件: ca_bundle.crt yourname.crt yourname.key

          使用以下命令创建它的 pk cs 12 版本:

          openssl pkcs12 -export -out yourname.pfx -inkey yourname.key -in yourname.crt -certfile ca_bundle.crt
          

          然后您需要将其导入到易于在 Apache 中配置的密钥库中

          keytool -importkeystore -srckeystore yourname.pfx -srcstorepass yourpassword -srcstoretype pkcs12 -destkeystore yourkeystore.jks -deststoretype jks -deststorepass yourkeystorepassword
          

          【讨论】:

            猜你喜欢
            • 2016-01-17
            • 2017-02-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-09-12
            • 2012-07-16
            • 1970-01-01
            相关资源
            最近更新 更多