以机器可读的格式获取apt的密钥ID和指纹


11

我正在尝试修补puppetlabs-apt中的一个问题,以允许使用密钥指纹作为标识符,以确保其40位密钥指纹中存在某个密钥。

我在检查密钥是否存在时遇到困难,我需要一个将输出以下内容的命令:

  • 密钥的8位数字ID。
  • 密钥的16位ID。
  • 密钥的40位ID。

有没有apt-key我可以用来输出这些值的命令(每行一个),所以我可以解析输出并检查键是否存在?

Answers:


21

apt-key adv 将让您直接将选项传递给GnuPG。

因此,您可以执行以下操作以获取可解析的支出:

# apt-key adv --list-public-keys --with-fingerprint --with-colons 
⋮
fpr:::::::::126C0D24BD8A2942CC7DF8AC7638D0442B90D010:
pub:-:4096:1:9D6D8F6BC857C906:2014-11-21:2022-11-19::-:Debian Security Archive Automatic Signing Key (8/jessie) <ftpmaster@debian.org>::scSC:
fpr:::::::::D21169141CECD440F2EB8DDA9D6D8F6BC857C906:
⋮

由于您只对指纹感兴趣(8位和16位ID仅是指纹的末尾),| grep ^fpr因此似乎可以为您提供所需的信息。


因此,使用fingerprint[-8:](Python)可以获得8位ID,fingerpint[-16:]获得16位ID?我以为这些是从密码学上获得的短哈希表示愚蠢的……
Naftuli Kay 2014年

2
@NaftuliTzviKay指纹是加密派生的哈希。再次对其进行散列与仅对其进行截断没有任何安全性好处。此外,8位甚至16位的数字太短而无法保证安全。您可以通过蛮力生成重复的密钥。只有完整的哈希是相当安全的。无法评论您的python代码是否按预期执行,因为我不知道python ...但是我想是的。仅是最后的8或16个十六进制数字。
derobert 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.