我正在尝试在 Linux 上使用 openssl 创建 RSA 密钥,然后将其转换为 PuTTY 格式,以便我也可以在 Windows PC 上使用它。
openssl genpkey -algorithm RSA-PSS -out myKey.pem -outform PEM -pkeyopt rsa_keygen_bits:2048
密钥已生成。我cat
看了一下,看起来还可以
现在将其转换为 PuTTY 格式:
puttygen myKey.pem -o myKey.ppk -O private
我收到以下错误:
puttygen: error loading 'myKey.pem': unrecognised key type
我尝试使用以下命令检查密钥:
openssl rsa -in myKey.pem -text
我收到以下错误:
140527068488128:error:0607907F:digital envelope routines:EVP_PKEY_get0_RSA:expecting an rsa key:../crypto/evp/p_lib.c:464:
知道发生了什么事吗?
答案1
您使用了错误的算法:RSA-PSS 而不是 RSA。
此命令将生成预期的密钥:
openssl genpkey -algorithm RSA -out myKey.pem -outform PEM -pkeyopt rsa_keygen_bits:2048
请注意,唯一的更改是替换RSA-PSS
为RSA
。
对于给定的私钥,您可以检索有关它的信息,包括所使用的算法,如下所示:
openssl asn1parse -in myKey.pem
错误的算法(对于 SSH 使用)将具有与此类似的行:
9:d=2 hl=2 l= 9 prim: OBJECT :rsassaPss
而 RSA 算法将具有与此类似的内容:
9:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption