Java-如何解锁受密码保护的PEM私钥

时间:2019-06-01 17:11:51

标签: java security openssl pem

我有一个由OpenSSL生成的受密码保护的PEM密钥文件

openssl genrsa -aes128 -passout stdin -out testfile.pem

我还使用OpenSSL生成了公共密钥文件

openssl rsa -in testfile.pem -out testfile_pub.pub(输入密码的道具)

我希望能够使用此私钥在我的索赔等上签名,然后发送请求。我正在努力理解(或更像是确认我的理解)的内容如下:

1)我的私钥受密码保护,是否意味着没有人首先解锁就无法真正生成公钥?即是保护所在?

2)如果要用Java读取此加密的私钥PEM文件,则必须执行以下操作:

\\ 1. Read file as string \\ 2. Replace all boring bits e.g. begin/end/rsa/private/public/key/enc/-- \\ 3. decode using Base64 \\ 4. read as PKCS8 keyspec and generate PrivateKey object

但这不是意味着实际上没有人阻止我阅读关键规格吗?我想我要比较的是我们如何使用可选的passpass / storepass生成JKS密钥。但也许我不应该对此进行比较。

有人可以帮助我理解吗?

谢谢

1 个答案:

答案 0 :(得分:0)

import os with open(os.path.expanduser("~/Desktop/Tracking_Info/kw_tracking_numbers.csv"), 'r') as tracking: TrackList = tracking.read().splitlines() print(TrackList) 不会导出公钥,而是以明文形式导出私钥(如果您提供了正确的密码)。要导出公钥,请使用openssl rsa -in testfile.pem -out testfile_pub.pub选项。

是的,您需要密码来导出公共密钥。

要在Java中导入私钥,您需要先将其转换为PKCS8:

-pubout

然后,您可以像下面这样用Java导入它:

openssl pkcs8 -topk8 -in testfile.pem -inform pem -out testfile_pkcs8.pem -outform pem

不,这并不意味着任何人都可以读取密钥,因为您仍然必须提供密码。