将加密的私钥导入jks

时间:2015-02-05 10:53:03

标签: encryption import key private jks

我需要在我的项目中使用ssl(双向握手)套接字进行连接。 因此,为了创建密钥,我使用了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

之后,我用这个命令创建了文件:

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文件中导入加密的私钥和公钥?

tanx很多。

2 个答案:

答案 0 :(得分:0)

我认为-import选项只允许您导入证书,而不是密钥。看看这个post,你可能不得不写一些解决方法。

答案 1 :(得分:0)

要将密钥对(密钥和cert)导入到Java密钥库中,首先需要创建一个p12文件。虽然问题是“将加密的私钥导入到jks”,但实际上我不认为使用“ nodes”选项会加密所讨论的密钥。

因此要导入密钥并将证书导入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”。