The man page Ubuntu untuk apt-key termasuk catatan berikut mengenai apt-key add
:
Catatan: Daripada menggunakan perintah ini keyring harus ditempatkan langsung di direktori /etc/apt/trusted.gpg.d/ dengan nama deskriptif dan "gpg" atau "asc" sebagai ekstensi file.
Saya tidak berpikir saya pernah melihat saran ini di tempat lain. Sebagian besar proyek yang meng-host repositori mereka sendiri mengatakan untuk mengunduh file kunci mereka dan menambahkannya apt-key
.
- Apa motivasi di balik saran ini?
- Apakah ini Ubuntu-isme, atau apakah itu berlaku untuk distro berbasis APT?
.d
direktori?) adalah sama..d
direktori.Jawaban:
Proyek-proyek tersebut memiliki instruksi yang sudah ketinggalan zaman. Saya tahu ini karena saya menerbitkan repositori Debian dan saya memperbarui instruksi ketika saya mengetahui tentang perubahan di Debian 9 APT. Memang, bagian dari manual ini sudah ketinggalan zaman, karena itu adalah direktori yang salah.
Ini tidak benar-benar berkaitan dengan
.d
direktori dan lebih berkaitan dengan mencegah kerentanan lintas situs di APT. Sistem yang lebih lama menggunakan file keyring terpisah untuk kenyamanan, tetapi ini sekarang menjadi kebutuhan untuk keamanan; keamanan Anda .Ini adalah kerentanannya. Pertimbangkan dua penerbit repositori, A dan B. Di dunia Debian 8 dan sebelumnya, kunci kedua penerbit masuk ke keyring global tunggal pada mesin pengguna. Jika penerbit A entah bagaimana dapat mengatur untuk mengganti situs penyimpanan WWW dari penerbit B, maka A dapat mempublikasikan paket subversif, ditandatangani dengan kunci A sendiri , yang dengan senang hati APA terima dan pasang. Kunci A, bagaimanapun, dipercaya secara global untuk semua repositori.
Mitigasi adalah bagi pengguna untuk menggunakan pegas kunci terpisah untuk penerbit individual , dan untuk merujuk pegas kunci tersebut dengan
Signed-By
pengaturan individual dalam definisi repositori mereka. Secara khusus, kunci penerbit A hanya digunakan dalamSigned-By
repositori A dan kunci penerbit B hanya digunakan dalamSigned-By
repositori B. Dengan cara ini, jika penerbit A mengganti repositori penerbit B, APT tidak akan menerima paket subversif darinya karena mereka dan repositori ditandatangani oleh kunci penerbit A bukan oleh penerbit B.The
/etc/apt/trusted.gpg.d
mekanisme di tangan adalah lebih tua rumah singgah agak cacat Poor Man terhadap ini, dari kembali pada tahun 2005 atau lebih, itu tidak cukup cukup baik. Ini mengatur keyring dalam file terpisah, sehingga dapat dikemas dan hanya diinstal dalam satu langkah oleh manajer paket (atau diunduh denganfetch
/curl
/wget
) seperti file lainnya. (Manajer paket menangani mencegah paket khusus penerbit- ini-adalah-repositori-keyring dari publisher dari penerbit B, dengan cara yang biasa menangani konflik file antar paket secara umum.) Tetapi masih menambahkannya ke set kunci yang dipercaya secara global untuk semua repositori. Mekanisme lengkap yang ada sekarang menggunakan file keyring terpisah, tidak dipercaya secara global/usr/share/keyrings/
.Instruksi saya sudah ada di sana. ☺ Ada beberapa langkah yang sedang dilakukan untuk memindahkan repositori Debian sendiri ke mekanisme ini, sehingga mereka tidak lagi menggunakan kunci yang dipercaya secara global. Anda mungkin ingin berbicara dengan "sebagian besar proyek" yang Anda temukan. Bagaimanapun, mereka saat ini menginstruksikan Anda untuk menyerahkan akses global ke APT pada mesin Anda kepada mereka.
Bacaan lebih lanjut
/etc/apt/trusted.gpg.d/
. Bug Debian # 861695.sources.list
harus memiliki opsi masuk yang menunjuk ke kunci tertentu . Bug Debian # 877012.sumber
apt-key del
mengambilkeyid
, yang merupakan hash yang tidak berarti dari kunci.Lebih mudah jika Anda dapat menghapus kunci menggunakan nama yang berarti ... seperti nama file.
Seperti yang dikatakan JdeBP, ini berfungsi baik dengan file kunci tepercaya yang diinstal sebagai bagian dari paket debian. Saya pikir itu juga bisa lebih baik ketika Anda menginstal file kunci secara manual.
Dalam mekanisme baru yang saat ini dalam "pengujian awal", ini lebih disederhanakan. Anda hanya perlu menghapus / menonaktifkan satu hal: repositori (di sources.list / sources.list.d). Itu secara otomatis akan berhenti mengizinkan kunci yang dikonfigurasi untuk repo itu (kecuali jika itu juga digunakan oleh repo lain).
Saya tidak tahu bagaimana memanfaatkan mekanisme keamanan baru ini. Saya hanya berasumsi bahwa saya perlu mempercayai seseorang jika saya menggunakan paket mereka. Proses instalasi paket masih berjalan sebagai
root
:-).sumber