我知道可以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。