Dapatkan id kunci dan sidik jari apt dalam format yang dapat dibaca mesin

11

Saya mencoba untuk menambal masalah di puppetlabs-apt untuk memungkinkan penggunaan sidik jari kunci sebagai pengidentifikasi untuk memastikan bahwa kunci tertentu hadir dengan sidik jari kunci 40 digitnya.

Saya mengalami kesulitan memeriksa bahwa kuncinya ada dan saya memerlukan perintah yang akan menampilkan sebagai berikut:

  • 8-digit ID kunci.
  • ID 16-digit dari kunci.
  • 40 digit ID kunci.

Apakah ada apt-keyperintah yang bisa saya gunakan untuk menampilkan nilai-nilai ini, satu per baris, jadi saya bisa mengurai output dan memeriksa apakah kuncinya ada?

Naftuli Kay
sumber

Jawaban:

21

apt-key adv akan membiarkan Anda langsung memberikan opsi ke GnuPG.

Jadi, Anda dapat melakukan sesuatu seperti ini untuk mendapatkan pembayaran yang dapat diuraikan:

# 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) <[email protected]>::scSC:
fpr:::::::::D21169141CECD440F2EB8DDA9D6D8F6BC857C906:
⋮

Karena Anda hanya tertarik pada sidik jari (ID 8-digit dan 16-digit hanya merupakan akhir dari sidik jari), | grep ^fprtampaknya akan memberi Anda garis-garis yang Anda pedulikan.

derobert
sumber
Jadi mengambil fingerprint[-8:](Python) akan memberi saya ID 8 digit dan fingerpint[-16:]akan memberi saya ID 16 digit? Konyol saya karena berpikir bahwa ini adalah hash pendek kriptologis yang diturunkan ...
Naftuli Kay
2
@NaftuliTzviKay Sidik jari adalah hash yang diturunkan secara kriptografis. Tidak ada manfaat keamanan untuk hashing lagi vs hanya memotongnya. Lebih jauh lagi 8 digit dan mungkin 16 digit terlalu pendek untuk diamankan; Anda dapat menghasilkan kunci duplikat dengan kekerasan. Hanya hash penuh yang cukup aman. Tidak dapat berkomentar jika kode python Anda melakukan seperti yang diharapkan, karena saya tidak tahu python ... Tapi saya kira ya. Ini hanya 8 atau 16 digit hex terakhir.
derobert