在windows下将gpg导出到p12

在windows下将gpg导出到p12

我正在使用 gpg4win,并尝试将我的 gpg 私钥导出为 p12 格式(以便将其导入 Lotus Notes)。根据我的理解,我需要:

gpgsm.exe -o "XXXXXXXX_private.p12" --export-secret-key-p12 0xXXXXXXXX

但是,我收到以下错误:“没有密钥”实际上,gpgsm -K 根本没有返回任何内容(gpg -K 有效)。

我错过了什么?

答案1

我认为你使用了错误的程序;pgpsm用于使用 S/MIME 协议签名、检查、加密或解密

我手头没有pgp4win,但根据手册页,这将导出你的公钥和密钥:

gpg -o XXXXXXX_private.p12 --export [key id] --export-format pkcs12 --cert

相关信息pkcs12如下,

pkcs12仅输出二进制块;默认文件扩展名为 .p12;签名密钥必须成对;输入必须与一个密钥完全匹配。在这种情况下,需要 --cert。

所以我加入了这个--cert选项,但没有仔细考虑这个选项:

--cert如果签名密钥可用,则此选项为 X.509 发行者长名称或 32 位或 64 位密钥 ID。


我做了一些测试(现在用的是 gpg4win),但有些地方不得不自相矛盾。gpg4wingpgsm中的工具描述如下

gpgsm 是一个类似于 gpg 的工具,用于为 X.509 证书和 CMS 协议提供数字加密和签名服务。它主要用作 S/MIME 邮件处理的后端。

这听起来确实正确。

因此,您在问题中发布的命令似乎完全合理,我只剩下两个线索:

  • 您可以尝试通过选项使用 ASCII 装甲-a输出
  • 并且有一个有关导出密钥的字符集的选项,这通常是(特别是较旧的)Windows 程序的问题:

--p12-charset name gpgsm 使用 UTF-8 编码 PKCS#12 文件的密码时使用的编码。此选项可用于强制以指定的编码名称对密码进行编码。 如果用于导入密钥的应用程序使用不同的编码,因此无法导入由 gpgsm 生成的文件,则此功能很有用。 名称的常用值为拉丁语1CP850。请注意,gpgsm 本身会自动导入任何使用最常用编码的密码文件。

答案2

答案可能只是指的是该程序的旧版本,但我能够使用此命令导出

gpgsm -o output.p12 --export-secret-key-p12 [keyID]

相关内容