Secara singkat:
- Dapatkan sertifikat yang ditandatangani sendiri
- Masukkan ke dalam beberapa
~/git-certs/cert.pem
file (misalnya )
- Setel
git
untuk mempercayai sertifikat ini menggunakan http.sslCAInfo
parameter
Lebih detail:
Dapatkan sertifikat server jarak jauh yang ditandatangani sendiri
Dengan asumsi, URL server adalah repos.sample.com
dan Anda ingin mengaksesnya melalui port 443
.
Ada beberapa opsi, bagaimana cara mendapatkannya.
Dapatkan sertifikat menggunakan openssl
$ openssl s_client -connect repos.sample.com:443
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:
-----BEGIN CERTIFICATE-----
MIIDnzCCAocCBE/xnXAwDQYJKoZIhvcNAQEFBQAwgZMxCzAJBgNVBAYTAkRFMRUw
EwYDVQQIEwxMb3dlciBTYXhvbnkxEjAQBgNVBAcTCVdvbGZzYnVyZzEYMBYGA1UE
ChMPU2FhUy1TZWN1cmUuY29tMRowGAYDVQQDFBEqLnNhYXMtc2VjdXJlLmNvbTEj
MCEGCSqGSIb3DQEJARYUaW5mb0BzYWFzLXNlY3VyZS5jb20wHhcNMTIwNzAyMTMw
OTA0WhcNMTMwNzAyMTMwOTA0WjCBkzELMAkGA1UEBhMCREUxFTATBgNVBAgTDExv
d2VyIFNheG9ueTESMBAGA1UEBxMJV29sZnNidXJnMRgwFgYDVQQKEw9TYWFTLVNl
Y3VyZS5jb20xGjAYBgNVBAMUESouc2Fhcy1zZWN1cmUuY29tMSMwIQYJKoZIhvcN
AQkBFhRpbmZvQHNhYXMtc2VjdXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP
ADCCAQoCggEBAMUZ472W3EVFYGSHTgFV0LR2YVE1U//sZimhCKGFBhH3ZfGwqtu7
mzOhlCQef9nqGxgH+U5DG43B6MxDzhoP7R8e1GLbNH3xVqMHqEdcek8jtiJvfj2a
pRSkFTCVJ9i0GYFOQfQYV6RJ4vAunQioiw07OmsxL6C5l3K/r+qJTlStpPK5dv4z
Sy+jmAcQMaIcWv8wgBAxdzo8UVwIL63gLlBz7WfSB2Ti5XBbse/83wyNa5bPJPf1
U+7uLSofz+dehHtgtKfHD8XpPoQBt0Y9ExbLN1ysdR9XfsNfBI5K6Uokq/tVDxNi
SHM4/7uKNo/4b7OP24hvCeXW8oRyRzpyDxMCAwEAATANBgkqhkiG9w0BAQUFAAOC
AQEAp7S/E1ZGCey5Oyn3qwP4q+geQqOhRtaPqdH6ABnqUYHcGYB77GcStQxnqnOZ
MJwIaIZqlz+59taB6U2lG30u3cZ1FITuz+fWXdfELKPWPjDoHkwumkz3zcCVrrtI
ktRzk7AeazHcLEwkUjB5Rm75N9+dOo6Ay89JCcPKb+tNqOszY10y6U3kX3uiSzrJ
ejSq/tRyvMFT1FlJ8tKoZBWbkThevMhx7jk5qsoCpLPmPoYCEoLEtpMYiQnDZgUc
TNoL1GjoDrjgmSen4QN5QZEGTOe/dsv1sGxWC+Tv/VwUl2GqVtKPZdKtGFqI8TLn
/27/jIdVQIKvHok2P/u9tvTUQA==
-----END CERTIFICATE-----
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 menggunakan Export
tombol saya mendapatkan file yang persis sama, seperti yang dibuat menggunakan openssl
.
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:
-----BEGIN CERTIFICATE-----
MIIDnzCCAocCBE/xnXAwDQYJKoZIhvcNAQEFBQAwgZMxCzAJBgNVBAYTAkRFMRUw
...........
/27/jIdVQIKvHok2P/u9tvTUQA==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
AnOtHeRtRuStEdCeRtIfIcAtEgOeShErExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxw
...........
/27/jIdVQIKvHok2P/u9tvTUQA==
-----END CERTIFICATE-----
Ini akan berhasil (tapi saya mengujinya hanya dengan sertifikat tunggal).
Konfigurasikan git untuk mempercayai sertifikat ini
$ git config --global http.sslCAInfo /home/javl/git-certs/cert.pem
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:
$ git config --global http.sslVerify false #NO NEED TO USE THIS
Jika Anda sudah mengatur git Anda untuk mengabaikan sertifikat ssl, hapus itu:
$ git config --global --unset http.sslVerify
dan Anda juga dapat memeriksa, bahwa Anda melakukan semuanya dengan benar, tanpa kesalahan pengejaan:
$ git config --global --list
apa yang harus mendaftar semua variabel, Anda telah menetapkan secara global. (Saya salah mengeja http ke htt).