我有一个由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
密钥。但也许我不应该对此进行比较。
有人可以帮助我理解吗?
谢谢
答案 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
不,这并不意味着任何人都可以读取密钥,因为您仍然必须提供密码。