GPG 和 GPGSM 是否使用相同的密钥数据库?

GPG 和 GPGSM 是否使用相同的密钥数据库?

我需要将我的一个 GPG 密钥导出为 PKCS12 密钥/证书。gpg无法执行此操作,但该工具gpgsm可以。但是,输入gpgsm -o <file> --export-secret-key-p12 <key-id>会返回gpgsm: can't export secret key `<key-id>'。我测试过gpgsm --list-keys,它什么也没返回。

GPGSM 应该与 GPG 一起使用吗?我注意到,第一次运行它时,会为其创建一个新文件。我认为如果 GPG 已经运行并配置好了,就不必这样做了。两者都意味着可以访问同一个密钥环吗?如果是这样,我该如何解决这个问题?如果不是,我该如何从 GPG 导出密钥并将其导入 GPGSM?

答案1

描述一下会更有用为什么你想做点什么,而不仅仅是什么你想做什么。我猜你正在尝试将 PGP 密钥用于 S/MIME 电子邮件加密或签名,但这实际上是不可能的。

答案是,不是,GPG 和 GPGSM 使用不同的格式和协议,这就是为什么它们首先被实现为单独的工具。GPG 是 OpenPGP 的实现,而 GPGSM 适用于 X.509(主要是 S/MIME)。

虽然两者都使用相同的加密算法,并且可以理论上使用相同的密钥材料(例如相同的 RSA 参数),这就是相似之处——你不能将 OpenPGP 用户证书直接转换为 X.509 证书,因此您也无法以 PKCS#12 格式将其导出。

(gpg-agent 能够使用 OpenPGP 密钥进行 SSH 身份验证,但这只是因为 SSH 密钥格式附加了元数据,因此“转换”只是提取 RSA 参数。另一方面,X.509 证书具有诸如主题名称之类的元数据,其语法与 OpenPGP 不同;发行者名称,而 OpenPGP 没有(基于信任网);以及密钥的使用(这很棘手,因为大多数 OpenPGP 实现都使用单个“证书”中的单独密钥,一个用于签名,一个用于加密)。

答案2

这不是对您的问题的直接回答,但是 CACert 发布了一个 Wiki 条目,详细说明了您想要做的事情。

本质上,您将使用从密钥对中导出的密钥生成证书签名请求,并获得由 CACert 等 CA 创建的证书。

我只是无法使用 gpgsm 在 Windows 上导出为 p12 文件格式,但在 Linux 上这不是问题。

来源:http://wiki.cacert.org/ConvertingPgpKeyToCertificate

相关内容