Baru-baru ini saya menemukan masalah dengan repositori apt Perusahaan saya. Masalahnya adalah bahwa jika kita menggunakan transportasi http standar, orang lain dapat dengan mudah mendapatkan paket. Karena Perusahaan mengemas perangkat lunak miliknya sendiri dan tidak ingin membagikannya kepada semua orang, transportasi http menjadi masalah. Bukan tragedi tapi masalah. Ada beberapa cara bagaimana membatasi akses ke paket - firewall, membatasi akses pada tingkat server web, menggunakan ssh sebagai transportasi. Cukup mudah untuk membaca membaca tentang topik ini dapat ditemukan di sini: Batasi Akses Ke Gudang Debian Pribadi Anda
Dalam kasus kami, kami memutuskan untuk menggunakan https transport + otentikasi sertifikat klien. Secara singkat, yang diperlukan hanyalah:
- Mempersiapkan sertifikat yang ditandatangani sendiri, klien dan server (menggunakan easy-rsa);
Konfigurasikan server web yang akan menerima repositori hanya untuk https; Dalam kasus nginx mungkin terlihat seperti:
server {
listen 443;
root /path/to/public;
server_name secure_repo;
ssl on;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:;
ssl_prefer_server_ciphers on;
ssl_client_certificate /etc/nginx/ssl/ca.crt;
ssl_verify_client on;
location / {
autoindex on;
}
}
Masukkan sertifikat klien, kunci klien dan sertifikat ca ke / etc / apt / ssl dan, dalam kasus dengan Ubuntu, tambahkan file 00https ke /etc/apt/apt.conf.d:
Debug::Acquire::https "true";
Acquire::https::example.com {
Verify-Peer "true";
Verify-Host "false";
CaInfo "/etc/apt/ssl/ca.crt";
SslCert "/etc/apt/ssl/client.crt";
SslKey "/etc/apt/ssl/client.key";
};
Perlu diingat, bahwa jika Anda menggunakan sertifikat yang ditandatangani sendiri, penting untuk mematikan verifikasi host: Verify-Host "false";
Jika Anda tidak melakukan ini, Anda akan menemukan kesalahan:
SSL: certificate subject name (blah-blah-blah) does not match target host name 'example.com'
Dan di sini kita mulai, tidak ada lagi akses tidak sah ke repositori. Jadi ini hal yang cukup berguna dan kuat.