如何将以PEM格式存储的X509证书和私钥转换成GPG格式?

8
我有一份PEM格式的X509证书链和私钥,需要将它们转换为GPG格式以便进行签名。请问如何操作?
我尝试使用gpgsm,但密钥仍未出现在gpg密钥列表中。
请给予指导。
2个回答

7

以下内容翻译自我的文章

步骤

  1. Break the pfx (p12) into pem files that can be used. For some reason, GPG can't handle standard encoding.

    openssl pkcs12 -in sectigo.pfx  -nokeys -out gpg-certs.pem
    openssl pkcs12 -in sectigo.pfx -nocerts -out gpg-key.pem
    
  2. Combine the keys into something GPG recognizes

    openssl pkcs12 -export -in gpg-certs.pem -inkey gpg-key.pem -out gpg-key.p12
    
  3. Import into GPG

    gpgsm --import gpg-key.p12
    
  4. At this point we have the p12 imported, and we can see it in Kleopatra, but we can’t use it for PGP operations.

    cat gpg-key.pem | PEM2OPENPGP_USAGE_FLAGS=authenticate pem2openpgp "Your Name <your@email.address>" > key.pgp
    
  5. Now!!!! We have a pgp key, and when you import the key.pgp into GPG it will absolutely have the same key as your certificate.

    gpg --import key.pgp
    

这些步骤清晰且实用。然而,您的答案格式使其难以解析和理解。我已将您的答案编辑为更易读的编号列表和代码块的形式。请审查我的编辑,确保它们符合您的期望,并学习如何通过 Stack Overflow 上的 markdown 进行格式化。 - Jeremy Caney

2
这是一个独立的密钥存储: gpg~/.gnupg/pubring.gpggpgsm~/.gnupg/pubring.kbx
因此,使用 gpgsm 添加的密钥不能与 gpg 共用;gpg 不会读取 ~/.gnupg/pubring.kbx
要查看使用 gpgsm 添加的密钥,请使用 gpgsm --list-keys。如果要从这些 gpgsm 密钥创建密文,请使用 gpgsm --encrypt。它是一个完全独立于gpg的工具。
关于导入 X.509 相关内容供 gpg 使用,GnuPG 没有提供相应的方法。OpenPGP标准中没有相关条款,因此没有可互操作性的解决方案。
但商用(Symantec)PGP Desktop 工具可以实现这一点,所以如果您可以获得 PGP Desktop 的副本,则可以将 X.509 内容导入到 PGP Desktop 的密钥存储中,然后将其导出为 .gpg/.asc 文件,然后在其上运行 gpg --import

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接