Ksh*_*rma 18 linux encryption gnupg
我需要自动化部署过程,该工具将自动签署发布工件。我的钥匙圈有一个主键,我只用它来创建子键和两个子键。一个用于签名的子密钥和一个用于加密的子密钥。
目前,所有密钥都有一个密码短语。我不想在配置文件中指定这个密码短语,因为这也会冒主键的风险。
所以我想我会通过执行以下操作为子项设置不同的密码短语:
$ gpg --edit-key [subkey-id]
gpg> passwd
gpg> save
Run Code Online (Sandbox Code Playgroud)
但这也改变了其他密钥的密码。
如何为单个密钥设置单独的密码短语?
Jen*_*rat 19
GnuPG 无法为子密钥设置单独的密码短语。但是有一个解决方法,在这种情况下它甚至看起来是一个很好的实践想法:
导出选择的子项(在示例中,子项具有 ID 0xDEADBEEF)。不要忘记感叹号,它确保 GnuPG 实际上与子键本身一起工作,而不是与它所属的主键一起工作!
gpg --export-secret-subkeys 0xDEADBEEF! >subkeys.pgp
Run Code Online (Sandbox Code Playgroud)
子键将附有公共主键和私有主“密钥存根”,但不附有私有主键本身。
将子项导入到另一个 GnuPG 主目录。该示例期望您位于项目根目录中,并且etc在那里有一个用于存放钥匙圈之类东西的文件夹。
gpg --homedir ./etc/gnupg --import subkeys.pgp
Run Code Online (Sandbox Code Playgroud)更改分隔子项的密码。
gpg --homedir ./etc/gnupg --edit-key 0xDEADBEEF
Run Code Online (Sandbox Code Playgroud)不要使用你的“普通”密钥环,总是参考上面提到的单独的 GnuPG 目录。
作为替代方案,您可能需要考虑创建一个用您自己的密钥签名的项目密钥。这可能具有其他贡献者/用户也可以签署密钥的优势(从而证明这确实是用于项目的密钥),并且在其他人将接管维护的情况下移交项目可能会更容易。
一个非常过时的(2013 年)gnupg.org 邮件存档解释了为 subkey 制作单独密码的尴尬解决方法。
这意味着约束不在密钥集(即主子密钥分组)的数据结构内,而仅在用于构造和修改密钥集的软件接口中。
引用自参考:
你好,
是否可以拥有一个主密钥和几个子密钥,其中子密钥的密码与主密钥不同(例如更短)?
您可能正在寻找的是离线主键(请参阅 --export-secret- subkeys)。但答案是:是的。gpg-agent 不关心密钥的连接。它甚至会多次要求您输入相同的密码(针对同一密钥的不同组件)。
但是 GnuPG 不直接支持这一点。
1) 导出密钥 (--export-secret-keys without --armor)
2)更改密码
3)再次导出(当然是到不同的文件)
4)对两个文件(在不同目录中)使用 gpgsplit 。结果如下所示:
000001-005.secret_key 000002-013.user_id 000003-002.sig 000004-007.secret_subkey 000005-002.sig
5) 现在你混合了两组的组件: mkdir combine mv a/000001* a/000002* a/000003* combine/ mv b/000004* b/000005* combine/cd combine/ cat * > different_passphrases.gpg
6)从secring中删除密钥:--delete-secret-key
7) 导入新的: gpg --import different_passphrases.gpg
豪克拉格
我还没有亲自确认这个操作——只是报告我所阅读的内容。
GnuPG 文档中关于这个重要主题的规范和讨论的缺乏令人失望。
即使这个问题很老了,我也想分享这个问题的解决方案,我也遇到过。
问题:我想要主密钥有一个单独的密码,我仅使用它来验证/创建[C]其他子密钥以及附加的子密钥[S,E,A]。
一开始,所有密钥(即主密钥和子密钥)只有一个密码。
我所做的是通过发出以下命令将主密钥备份到不同的位置:
$ gpg --list-secret-keys --with-keygrip
~/.gnupg/private-keys-v1.d/<your-keygrip>.key它向我显示了主密钥的keygrip( 下密钥的文件名)。
然后,我将该密钥文件(以及相应的吊销证书)移动到不同的备份位置,最后从~/.gnupg/private-keys-v1.d/<your-keygrip>.key.
(撤销证书如下~/.gnupg/openpgp-revocs.d/<your-keygrip>.rev)
发出后gpg --list-secret-keys我可以sec#在主键上看到,这表明该键不再存在:
sec# rsa4096/0x123123123123123 2018-02-01 [C] [expires: 2019-02-01]
Key fingerprint = 123 123 123 123 123 123 123 123 123 123
Run Code Online (Sandbox Code Playgroud)
现在我刚刚编辑了该键:
gpg --edit-key <your-key-id>
gpg> passwd
gpg> save
Run Code Online (Sandbox Code Playgroud)
这将询问每个子密钥的密码,然后让您更改它。
最后,我的子密钥有一个(更简单的)密码,而我的主密钥存储在异地,由初始(更强)的密码保护。
编辑:请注意,这仅适用于 GnuPG 2.1 及更高版本!对于较旧的 GnuPG 版本,您必须导出所有密钥(主密钥 + 子密钥),删除它们,然后仅重新导入子密钥。从2.1版本开始才可以单独删除主键!
| 归档时间: |
|
| 查看次数: |
7327 次 |
| 最近记录: |