如何将 SSH 公钥从 PEM 格式转换为 DER 格式?

如何将 SSH 公钥从 PEM 格式转换为 DER 格式?

我想将现有的公钥(使用 生成ssh-keygen)从PEM-format 转换为DER-format

我试过:

openssl rsa -in ~/.ssh/id_rsa.pub -inform PEM -pubin -outform DER -out ~/.ssh/id_rsa.pub.der

不幸的是,这会产生以下错误:

unable to load Public Key
139946985690784:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: PUBLIC KEY

该文件~/.ssh/id_rsa.pub包含公钥;cat ~/.ssh/id_rsa.pub给出:

ssh-rsa ...... user@machine

我究竟做错了什么?

答案1

OpenSSH 公钥格式与 PEM 格式不同。你必须跑ssh-keygen来转换它。

ssh-keygen -f ~/.ssh/id_rsa.pub -e -m PEM >pubkey.pem

然后使用将其转换为 DER 格式openssl rsa

openssl rsa -RSAPublicKey_in -in pubkey.pem -inform PEM -outform DER -out ~/.ssh/id_rsa.pub.der -RSAPublicKey_out

请注意,您还必须指定-RSAPublicKey_in(不是-pubin)并将-RSAPublicKey_out其保留为 RSA 公钥 (PKCS#1)。

相关内容