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

Edw*_*ard 9 key-authentication openssl conversion

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

我试过:

openssl rsa -in ~/.ssh/id_rsa.pub -inform PEM -pubin -outform DER -out ~/.ssh/id_rsa.pub.der
Run Code Online (Sandbox Code Playgroud)

不幸的是,这给出了以下错误:

unable to load Public Key
139946985690784:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: PUBLIC KEY
Run Code Online (Sandbox Code Playgroud)

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

ssh-rsa ...... user@machine
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

yae*_*shi 10

OpenSSH 公钥格式与 PEM 格式不同。你必须运行ssh-keygen才能转换它。

ssh-keygen -f ~/.ssh/id_rsa.pub -e -m PEM >pubkey.pem
Run Code Online (Sandbox Code Playgroud)

然后使用openssl rsa.

openssl rsa -RSAPublicKey_in -in pubkey.pem -inform PEM -outform DER -out ~/.ssh/id_rsa.pub.der -RSAPublicKey_out
Run Code Online (Sandbox Code Playgroud)

请注意,您还必须指定-RSAPublicKey_in(not -pubin) 并将-RSAPublicKey_out其保留为 RSA Public Key (PKCS#1)。