使用公钥作为质子交换膜,如何将其转换为德格式使用开放式SSL?请注意,这不是 x509 证书。另外这个问题是关于 EC (ECDSA) 公钥而不是 RSA 并使用开放式SSL不是 C、C++ 或其他编程语言
-----BEGIN PUBLIC KEY-----
xxx
-----END PUBLIC KEY-----
答案1
尝试:
openssl pkey -pubin -in ec_pub.pem -outform DER -out ec_pub.der
答案2
PEM 格式由-----BEGIN …-----
行、Base64 编码正文和-----END …-----
行组成。如果您只想转换为 DER(二进制),则只需提取正文并将其从 Base64 转换为二进制即可。
(这适用于纯文本,即非加密文件。加密的 PEM 文件具有描述加密方法的附加信息。您通常无法仅提取 DER,您必须对其进行解密,因为 Base64 编码的部分不有有关加密方法的任何元数据。)
您通常可以使用以下命令来执行此操作openssl enc -base64
命令,可以缩写为openssl base64
.
openssl base64 -d -in myfile.pem -out myfile.der
请注意,如果您想使用直接 Base64 解码器,例如base64
,则需要删除开始/结束行。
<myfile.pem grep '^[^-]' | base64 -d >myfile.der
或者,通过openssl
,您可以使用特定于您正在处理的特定数据类型的管理命令。 (由于各种原因,多种数据可以由多个 openssl 命令处理。)操作 aPUBLIC KEY
是openssl pkey
。传递-outform DER
以指示您想要 DER 输出(-inform PEM
是可选的,因为这是默认值)。传递-pubin
以指示输入是公钥(默认情况下openssl pkey
需要私钥)。
openssl pkey -pubin -in myfile.pem -outform DER -out myfile.der
如果您碰巧知道该密钥是 EC 密钥,openssl ec -pubin -in myfile.pem -outform DER
也可以,但使用没有任何优势,ec
除非您需要该命令来使用不再受支持的 OpenSSL 的古董版本。