【问题标题】:import encrypted private key to jks将加密的私钥导入 jks
【发布时间】:2015-04-05 04:41:49
【问题描述】:

我需要在我的项目中使用 ssl(2 路握手)套接字进行连接。 所以为了创建密钥,我使用 openssl 和这个命令:

服务器:

req -x509 -days 3650 -nodes -newkey rsa:2048 -keyout a_private.key -out a_certificate.cert

rsa -in a_private.key -des3 -out a_private_des.key

rsa -in a_private_des.key -pubout -out a_pub.key

对于客户:

req -x509 -days 3650 -nodes -newkey rsa:2048 -keyout b_private.key -out b_certificate.cert

rsa -in b_private.key -des3 -out b_private_des.key

rsa -in b_private_des.key -pubout -out b_pub.key

为了导入 jks 文件,我使用了 keytool:

keytool -import -alias a_private -file a_private_des.key -keystore a.jks

keytool error: java.lang.Exception: Input not an X.509 certificate

之后,我用这个命令制作了 der 文件:

pkcs8 -topk8 -in a_private_des.key -out a_private_des.der -outform DER

并重试将密钥导入 jks 文件:

keytool -import -alias a_private -file a_private_des.der -keystore a.jks

keytool error: java.lang.Exception: Input not an X.509 certificate

我得到与 b_pub.key 相同的异常


如何在 jks 文件中导入加密的私钥和公钥?

很多。

【问题讨论】:

    标签: encryption import key private jks


    【解决方案1】:

    要将密钥对(密钥和证书)导入 java 密钥库,首先需要创建一个 p12 文件。虽然问题是“将加密的私钥导入 jks”,但我实际上并不认为所讨论的密钥是加密的,因为使用了“节点”选项。

    因此要导入密钥并将证书导入 JKS 使用:

    # create p12
    openssl pkcs12 -export \
      -name a_private \
      -out a_private.p12 \
      -inkey a_private.key \
      -in a_certificate.cert \
      -passin "pass:changeit" \
      -passout "pass:changeit"
    
    # create jks
    keytool -v -importkeystore -deststoretype pkcs12 -destkeystore \
      "a.jks" \
      -srckeystore "a_private.p12" -srcstoretype pkcs12 \
      -alias "a_private" -srcstorepass "changeit" \
      -deststorepass "changeit" -destkeypass "changeit"
    

    其实也改一下密码“changeit”。

    【讨论】:

      【解决方案2】:

      我相信 -import 选项只能让您导入证书,而不是密钥。看看这个post,您似乎必须编写某种解决方法。

      【讨论】:

      • 感谢您的回复。我需要使用加密密钥进行 ssl 套接字连接。如何在我的客户端套接字中使用公钥?
      • 我认为该过程是创建您的私钥,使用该密钥创建自签名证书,然后创建证书并将其添加到 jks 信任库,然后您可以部署该证书以供您的应用程序使用。所以我认为您需要更改的项目是将您创建的证书(a_certificate.cert)导入a.jks,而不是尝试导入密钥。完成后,您可以使用keytool -list -v -keystore a.jks 查看密钥库的内容进行验证。
      猜你喜欢
      • 2011-01-29
      • 1970-01-01
      • 1970-01-01
      • 2013-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多