openssl将id_rsa.pub转换为DER输出


2

我无法理解如何使用openssl工具转换rsa公钥。

这适用于私钥

$ openssl rsa -in id_rsa -pubout -outform DER > out
writing RSA key

如果我只有一个公钥,我想我也可以这样做,只需添加“-pubin”。但我得到一个神秘的错误抱怨它期待一个公钥......但这就是我给它的。

$ openssl rsa -pubin -in id_rsa.pub -pubout -outform DER > out
unable to load Public Key
140028314654360:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:701:Expecting: PUBLIC KEY

如果我应该使用pkey而不是我尝试了,我仍然得到错误,但没有第二行

$ openssl pkey -pubin -in id_rsa.pub -pubout -outform DER > out
unable to load Public Key

有任何想法吗?

Answers:


3

OpenSSL不了解OpenSSH格式的公钥。 (他们都使用相同的私钥格式大多只是巧合 - 事实上,最近的OpenSSH开始使用不同的,不兼容的。)

使用最近的OpenSSH,您可以使用 ssh-keygen -f id_rsa -e -m PEM 获取PKCS#1文件。

同样的, ssh-keygen -f id_rsa -e -m PKCS8 将为您提供PKCS#8格式的密钥。

您还可以使用私有文件从中提取OpenSSL格式的公钥 -in id_rsa -pubout


我需要找到一个只使用公钥的解决方案。 (可悲的是,我目前只是在一个小的python脚本中转换为DER格式。我仍然想要了解如何正确使用命令行工具。) ssh-keygen -f id_rsa.pub -e -m PEM > tmp.pem 完成得很好。然后 openssl rsa -pubin -in tmp.pem -pubout -outform DER > out 仍然给我一个关于加载公钥有问题的错误。
BuddyJohn

嗯,它与PKCS8合作。
BuddyJohn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.