Signing Repository
| Jenis Repositori | Wajib Ditandatangani |
|---|---|
| Remote (server internet) | Ya — xbps-install menolak paket dari repo remote tanpa signature |
| Lokal (di mesin sendiri) | Tidak wajib |
Generate Kunci RSA
xbps-rindex membutuhkan kunci RSA dalam format PEM.
Dengan ssh-keygen:
ssh-keygen -t rsa -b 4096 -m PEM -f private.pem
Atau dengan openssl:
openssl genrsa -out private.pem 4096
Opsi
-des3pada openssl mengenkripsi kunci dengan password. Setiap kali menggunakan kunci tersebut, password akan diminta — hindari jika ini digunakan dalam skrip otomatis.
Output:
private.pem— kunci privat. Jangan disebarkan, jangan di-commit ke repositori publik.private.pem.pub— kunci publik, didistribusikan ke pengguna.
Alur Kerja Lengkap
# 1. Buat direktori repositori
mkdir -p ~/signed-repo
# 2. Generate kunci RSA
ssh-keygen -t rsa -b 4096 -m PEM -f ~/signed-repo/private.pem
# 3. Copy paket ke repositori
cp /path/to/*.xbps ~/signed-repo/
# 4. Buat indeks repositori
xbps-rindex -a ~/signed-repo/*.xbps
# 5. Inisialisasi tanda tangan repositori (sekali saja)
xbps-rindex --privkey ~/signed-repo/private.pem \
--sign \
--signedby "T4n OS Repository <admin@t4n.org>" \
~/signed-repo
# 6. Tandatangani semua paket
xbps-rindex --privkey ~/signed-repo/private.pem --sign-pkg ~/signed-repo/*.xbps
Urutan langkah 4 dan 5–6 penting —
xbps-rindex -aharus dijalankan sebelum--signagar repodata sudah ada saat ditandatangani.
Menandatangani Paket Baru
Paket yang ditambahkan setelah inisialisasi tidak ditandatangani secara otomatis. Setiap kali ada paket baru:
# Tambahkan paket ke indeks
xbps-rindex -a ~/signed-repo/paket-baru-1.0_1.x86_64.xbps
# Tandatangani
xbps-rindex --privkey ~/signed-repo/private.pem \
--sign-pkg ~/signed-repo/paket-baru-1.0_1.x86_64.xbps
Atau tandatangani semua paket sekaligus (paket yang sudah ditandatangani akan dilewati):
xbps-rindex --privkey ~/signed-repo/private.pem --sign-pkg ~/signed-repo/*.xbps
Sisi Pengguna
Tambahkan repositori:
echo 'repository=https://serveranda.com/signed-repo' | sudo tee /etc/xbps.d/10-myrepo.conf
sudo xbps-install -S
XBPS akan memverifikasi tanda tangan secara otomatis. Jika repositori tidak ditandatangani, instalasi ditolak dengan error:
ERROR: repository `https://...' is not signed, refusing to continue!
Pengguna tidak perlu menginstall kunci publik secara manual — metadata signature sudah disematkan di repodata dan XBPS akan prompt trust fingerprint saat pertama kali sinkronisasi.
Ringkasan Perintah
| Tugas | Perintah |
|---|---|
| Generate kunci | ssh-keygen -t rsa -b 4096 -m PEM -f private.pem |
| Buat indeks repositori | xbps-rindex -a /path/to/repo/*.xbps |
| Inisialisasi signature repo | xbps-rindex --privkey private.pem --sign --signedby "Nama" /path/to/repo |
| Tandatangani paket | xbps-rindex --privkey private.pem --sign-pkg /path/to/repo/*.xbps |
| Tandatangani paket baru | xbps-rindex --privkey private.pem --sign-pkg /path/to/repo/paket-baru.xbps |
Troubleshooting
repository is not signed, refusing to continue
Repositori remote belum memiliki tanda tangan. Jalankan --sign dan --sign-pkg.
invalid signature
Repodata atau file paket dimodifikasi setelah penandatanganan. Tandatangani ulang dengan --sign dan --sign-pkg.
Password kunci hilang (jika pakai -des3)
Tidak bisa dipulihkan. Generate kunci baru dan tandatangani ulang repositori.