You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法将PKCS1格式PGP密钥转换为PKCS8格式的解决方案求助

问题与解决办法

问题概述

执行命令:
openSSL pkcs8 -in private-key.pem -topk8 -nocrypt -out private-pkc8.pk8
报错:Could not find private key of key from private-key.pem

同时尝试其他命令均失败:

  • sudo ssh-keygen -e -f private-key.pem -m PKCS8 > public-key.pem 报错:Load key "private-key.pem": invalid format
  • openssl rsa -RSAPublicKey_in -in public-key.pem -pubout 报错:unable to load Public Key 140704425797376:error:0908F066:PEM routines:get_header_and_data:bad end line:crypto/pem/pem_lib.c:852:

核心原因:你的密钥是PGP格式(头部为-----BEGIN PGP PRIVATE KEY BLOCK-----),而OpenSSL、ssh-keygen仅支持OpenSSL标准的密钥格式(如PKCS1、PKCS8、SPKI),直接修改头部无法解决格式不兼容问题,必须先转换格式。

解决步骤

1. 将PGP私钥转换为OpenSSL兼容的RSA私钥

  1. 查看你的PGP密钥ID:
    gpg --list-secret-keys
    输出中类似sec rsa4096/1234ABCD 2024-01-01 [SC]的1234ABCD就是密钥ID。

  2. 导出并转换私钥:
    gpg --export-secret-keys --armor 1234ABCD | openssl rsa -inform PEM -out private-key-openssl.pem
    替换1234ABCD为你的实际密钥ID。

  3. 验证转换后的私钥:
    openssl rsa -in private-key-openssl.pem -check
    如果输出RSA key ok,说明转换成功。

2. 将转换后的私钥转为PKCS8格式

现在可以执行你最初的命令,使用转换后的私钥:
openssl pkcs8 -in private-key-openssl.pem -topk8 -nocrypt -out private-pkc8.pk8

3. 转换PGP公钥为OpenSSL兼容格式

如果需要处理公钥,执行以下命令:
gpg --export --armor 1234ABCD | openssl x509 -inform PEM -pubkey -noout > public-key-openssl.pem
或者:
gpg --export 1234ABCD | openssl rsa -pubin -inform DER -outform PEM -out public-key-openssl.pem

转换后即可用OpenSSL命令处理公钥,比如:
openssl rsa -RSAPublicKey_in -in public-key-openssl.pem -pubout

内容的提问来源于stack exchange,提问作者yigozer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 22:40:08