Sysadmin untuk proyek yang sedang saya jalani memutuskan bahwa SSH "terlalu banyak masalah"; sebagai gantinya, ia telah mengatur Git agar dapat diakses melalui https://
URL (dan otentikasi nama pengguna / kata sandi). Server untuk URL ini menyajikan sertifikat yang ditandatangani sendiri, jadi dia menyarankan semua orang untuk mematikan validasi sertifikat. Ini tidak menurut saya pengaturan yang baik, keamanan-bijaksana.
Apakah mungkin untuk memberi tahu Git bahwa untuk remote X (atau lebih baik, remote di repositori mana pun yang dimulai https://$SERVERNAME/
) itu adalah untuk menerima sertifikat tertentu, dan hanya sertifikat itu? Pada dasarnya menggandakan perilaku kunci-server SSH.
git
ssl-certificate
zwol
sumber
sumber
Jawaban:
Secara singkat:
~/git-certs/cert.pem
file (misalnya )git
untuk mempercayai sertifikat ini menggunakanhttp.sslCAInfo
parameterLebih detail:
Dapatkan sertifikat server jarak jauh yang ditandatangani sendiri
Dengan asumsi, URL server adalah
repos.sample.com
dan Anda ingin mengaksesnya melalui port443
.Ada beberapa opsi, bagaimana cara mendapatkannya.
Dapatkan sertifikat menggunakan openssl
Tangkap output ke dalam file
cert.pem
dan hapus semua kecuali bagian antara (dan termasuk)-BEGIN CERTIFICATE-
dan-END CERTIFICATE-
Konten file yang dihasilkan ~ / git-certs / cert.pem mungkin terlihat seperti ini:
Dapatkan sertifikat menggunakan browser web Anda
Saya menggunakan Redmine dengan repositori Git dan saya mengakses URL yang sama untuk UI web dan untuk akses baris perintah git. Dengan cara ini, saya harus menambahkan pengecualian untuk domain itu ke dalam browser web saya.
Menggunakan Firefox, saya pergi ke
Options -> Advanced -> Certificates -> View Certificates -> Servers
, menemukan ada host yang ditandatangani sendiri, memilihnya dan menggunakanExport
tombol saya mendapatkan file yang persis sama, seperti yang dibuat menggunakanopenssl
.Catatan: Saya sedikit terkejut, tidak ada nama otoritas yang disebutkan. Ini baik
Memiliki sertifikat tepercaya dalam file khusus
Langkah sebelumnya akan menghasilkan sertifikat dalam beberapa file. Tidak masalah, file apa itu asalkan dapat dilihat oleh git Anda saat mengakses domain itu. Saya menggunakan
~/git-certs/cert.pem
Catatan: Jika Anda membutuhkan lebih banyak sertifikat yang ditandatangani sendiri secara tepercaya, masukkan ke dalam file yang sama:
Ini akan berhasil (tapi saya mengujinya hanya dengan sertifikat tunggal).
Konfigurasikan git untuk mempercayai sertifikat ini
Anda juga dapat mencoba melakukan sistem itu secara luas, menggunakan
--system
alih-alih--global
.Dan mengujinya: Anda sekarang dapat berkomunikasi dengan server Anda tanpa menggunakan:
Jika Anda sudah mengatur git Anda untuk mengabaikan sertifikat ssl, hapus itu:
dan Anda juga dapat memeriksa, bahwa Anda melakukan semuanya dengan benar, tanpa kesalahan pengejaan:
apa yang harus mendaftar semua variabel, Anda telah menetapkan secara global. (Saya salah mengeja http ke htt).
sumber
Penyesuaian Pengguna OSX.
Mengikuti langkah-langkah dari jawaban yang Diterima bekerja untuk saya dengan tambahan kecil ketika mengkonfigurasi pada OSX.
Saya meletakkan
cert.pem
file dalam direktori di bawah OSX saya pengguna login dan dengan demikian membuat saya menyesuaikan lokasi untuk sertifikat tepercaya.Konfigurasikan git untuk mempercayai sertifikat ini:
sumber