Signing Repository

Jenis RepositoriWajib 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 -des3 pada 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 -a harus dijalankan sebelum --sign agar 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

TugasPerintah
Generate kuncissh-keygen -t rsa -b 4096 -m PEM -f private.pem
Buat indeks repositorixbps-rindex -a /path/to/repo/*.xbps
Inisialisasi signature repoxbps-rindex --privkey private.pem --sign --signedby "Nama" /path/to/repo
Tandatangani paketxbps-rindex --privkey private.pem --sign-pkg /path/to/repo/*.xbps
Tandatangani paket baruxbps-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.


@T4n-Labs · @Gh0sT4n