如何使用 GnuPG 导出 PEM 格式的公钥?

如何使用 GnuPG 导出 PEM 格式的公钥?

我知道可以gpg --export -o pub.key -a "Username"导出用户的公钥,但是它似乎没有写入标准 PEM 格式的块。

有没有办法从 gpg 导出 PEM 格式的密钥?

答案1

您需要 gpgsm 实用程序,但是,是的,您可以。

gpgsm -o secret-key.p12 --export-secret-key-p12 0xXXXXXXXX

它包含密钥和证书。然后你可以用 openSSL 拆分它们,同时将其转换为 .pem

openssl pkcs12 -in secret-key.p12 -nocerts -out gpg-key.pem
openssl pkcs12 -in secret-key.p12 -nokeys -out gpg-certs.pem

答案2

你需要gpgsm

要将密钥从gpg密钥库克隆到gpgsm密钥库,请检查此评论. 复制解决方案至此处

 $ gpg --list-secret-keys --with-keygrip
 $ gpgsm --gen-key -o temporary.cert
 > Existing Key
 > use keygrip from gpg output
 > fill the X509 values
 > create a self signed certificate
 $ gpgsm --import temporary.cert
 $ gpgsm --list-keys
 > find the key just imported
 $ gpgsm -o cert.p12 --export-secret-key-p12 ${KEY_ID}

答案3

使用该--export-ssh-key选项,然后将其转换为 PEM:

ssh-keygen -f <(gpg --export-ssh-key <short_key_id>) -e -m pem

答案4

由于 GitLab 需要 PEM 格式的公共 GPG 密钥,你可以按照他们的教程

将私钥导出到txt具体如下:

gpg --armor --export-secret-keys 0x<key-ID>

或者

gpg --armor --export-secret-keys "email-address"

使用用于生成私钥/密钥的 Key-ID 或电子邮件地址。

将私钥写入磁盘:

gpg --armor --export-secret-keys "[email protected]" > test.pem

将公钥转换为txt/pem:

gpg --export -a "[email protected]"

记得使用你的电子邮件/密钥 ID

相关内容