Menggunakan Git, apakah ada cara untuk mengatakannya untuk menerima sertifikat yang ditandatangani sendiri?
Saya menggunakan server https untuk meng-host server git tetapi untuk saat ini sertifikat ditandatangani sendiri.
Ketika saya mencoba membuat repo di sana untuk pertama kalinya:
git push origin master -f
Saya mendapatkan kesalahan:
error: Cannot access URL
https://the server/git.aspx/PocketReferences/, return code 22
fatal: git-http-push failed
git
version-control
https
self-signed
Ian Vink
sumber
sumber
sslcainfo
opsi. jika Anda dapat berhasil menggunakancurl --cacert
untuk menarik jalur repo Anda tetapi git tidak berfungsi, Anda harus menambahkan sertifikat ke program Keychain OSX yang misterius. lebih lanjut di sini superuser.com/questions/605900/…Jawaban:
Untuk secara permanen menerima sertifikat tertentu
Coba
http.sslCAPath
atauhttp.sslCAInfo
. Jawaban Adam Spires memberikan beberapa contoh bagus. Ini adalah solusi paling aman untuk pertanyaan itu.Untuk menonaktifkan verifikasi TLS / SSL untuk satu perintah git
mencoba melewati
-c
untukgit
dengan variabel config yang tepat, atau menggunakan jawaban Flow :Untuk menonaktifkan verifikasi SSL untuk repositori tertentu
Jika repositori sepenuhnya di bawah kendali Anda, Anda dapat mencoba:
Ada beberapa opsi konfigurasi SSL di
git
. Dari halaman manual darigit config
:Beberapa opsi konfigurasi SSL lain yang bermanfaat:
sumber
git -c http.sslVerify=false clone https://domain.com/path/to/git
menyelesaikan masalah saya, terima kasih ...Anda dapat mengatur
GIT_SSL_NO_VERIFY
ketrue
:atau jika tidak, konfigurasikan Git untuk tidak memverifikasi koneksi pada baris perintah:
Perhatikan bahwa jika Anda tidak memverifikasi sertifikat SSL / TLS, maka Anda rentan terhadap serangan MitM .
sumber
-c
benderagit
untuk memodifikasi nilai konfigurasi untuk satu perintah. Saya pikir sintaks ini lebih bersih.-c
git. Saya benar-benar berpikir bahwa itu adalah solusi yang lebih bersih daripada mencemari lingkungan. :)git -c http.sslVerify=false <gitSubCommand>
juga dapat bekerja melalui perantara.Saya bukan penggemar berat dari [EDIT: versi asli dari] jawaban yang ada, karena menonaktifkan pemeriksaan keamanan harus menjadi pilihan terakhir, bukan solusi pertama yang ditawarkan. Meskipun Anda tidak dapat mempercayai sertifikat yang ditandatangani sendiri pada tanda terima pertama tanpa beberapa metode verifikasi tambahan, menggunakan sertifikat untuk
git
operasi selanjutnya setidaknya membuat hidup jauh lebih sulit untuk serangan yang hanya terjadi setelah Anda mengunduh sertifikat. Dengan kata lain, jika sertifikat yang Anda unduh adalah asli, maka Anda baik-baik saja sejak saat itu. Sebaliknya, jika Anda cukup menonaktifkan verifikasi maka Anda terbuka lebar untuk segala jenis serangan man-in-the-middle di titik mana pun .Untuk memberikan contoh spesifik:
repo.or.cz
repositori yang terkenal menyediakan sertifikat yang ditandatangani sendiri . Saya dapat mengunduh file itu, meletakkannya di suatu tempat seperti/etc/ssl/certs
, dan kemudian melakukan:Perhatikan bahwa menggunakan lokal di
git config
sini (yaitu tanpa--global
) berarti bahwa sertifikat yang ditandatangani sendiri ini hanya dipercaya untuk repositori khusus ini, yang bagus. Ini juga lebih baik daripada menggunakanGIT_SSL_CAPATH
karena menghilangkan risikogit
melakukan verifikasi melalui Otoritas Sertifikat berbeda yang berpotensi dikompromikan.sumber
/etc/ssl/certs/
direktori dan secara efisien akan memilah semua yang Anda butuhkan. Saya belum menguji ini, ingat, tetapi mungkin memungkinkan Anda menggunakan--global
dengan sejumlah sertifikat. Namun layak untuk diuji.git config http.validCertFingerprint <base64-encoded-hash-of-certifcate>
git clone --config http.sslCAInfo=<path_to_cert> https://repo.or.cz/org-mode.git
(Tidak perlu memanggil perintah 'git config' setelah).Konfigurasi Sertifikat Git yang Ditandatangani Sendiri
tl; dr
Kunci konfigurasi yang Anda cari adalah:
http.sslverify
- Selalu benar. Lihat catatan di atas.Ini untuk mengonfigurasi sertifikat host yang Anda percayai
http.sslCAPath
http.sslCAInfo
Ini untuk mengonfigurasi sertifikat ANDA untuk merespons tantangan SSL.
http.sslCert
http.sslCertPasswordProtected
Secara selektif menerapkan pengaturan di atas untuk host tertentu.
http.<url>.*
Global
.gitconfig
untuk Otoritas Sertifikat yang Ditandatangani SendiriDemi saya sendiri dan rekan-rekan saya di sini adalah bagaimana kami berhasil mendapatkan sertifikat yang ditandatangani sendiri untuk bekerja tanpa menonaktifkan
sslVerify
. Edit Anda.gitconfig
untuk menggunakangit config --global -e
tambahkan ini:Referensi:
Tentukan konfigurasi saat
git clone
-ingJika Anda perlu menerapkannya pada basis per repo, dokumentasi memberitahu Anda untuk hanya berjalan
git config --local
di direktori repo Anda. Nah itu tidak berguna ketika Anda belum mendapatkan repo yang dikloning secara lokal, tetapi sekarang bukan?Anda dapat melakukan
global -> local
tipu-muslihat dengan mengatur konfigurasi global Anda seperti di atas dan kemudian menyalin pengaturan tersebut ke konfigurasi repo lokal Anda setelah diklon ...ATAU apa yang dapat Anda lakukan adalah menentukan perintah konfigurasi
git clone
yang diterapkan pada repo target setelah dikloning.Satu Liner
EDIT: Lihat VonC 's jawaban bahwa titik-titik keluar peringatan tentang path absolut dan relatif untuk versi git dari 2.14.x / 2,15 untuk satu kapal ini
CentOS
unable to load client key
Jika Anda mencoba ini pada CentOS dan
.pem
file Anda memberi AndaMaka Anda akan menginginkan jawaban StackOverflow ini tentang cara
curl
menggunakan NSS alih-alih Open SSL.Dan Anda ingin membangun kembali
curl
dari sumber :restart komputer karena libcurl masih dalam memori sebagai perpustakaan bersama
Python, pip, dan conda
Terkait : Bagaimana cara menambahkan sertifikat CA Root kustom ke CA Store yang digunakan oleh pip di Windows?
sumber
http.sslCAPath
. Dalam kasus saya, saya harus menggunakanhttp.sslCAInfo
untuk menentukan file tertentu. Melakukan Git yang diizinkan untuk terhubung ke GitHub pribadi kami tanpa menonaktifkan validasi SSL.Saya terus menemukan masalah ini, jadi tuliskan skrip untuk mengunduh sertifikat yang ditandatangani sendiri dari server dan menginstalnya ke ~ / .gitcerts, kemudian perbarui git-config untuk menunjuk ke sertifikat ini. Ini disimpan dalam konfigurasi global, jadi Anda hanya perlu menjalankannya sekali per remote.
https://github.com/iwonbigbro/tools/blob/master/bin/git-remote-install-cert.sh
sumber
Jawaban ini disarikan dari artikel ini yang ditulis oleh Michael Kauffman.
Gunakan Git untuk Windows dengan sertifikat SSL perusahaan
Masalah :
Jika Anda memiliki sertifikat SSL perusahaan dan ingin mengkloning repo Anda dari konsol atau VSCode Anda mendapatkan kesalahan berikut:
fatal: tidak dapat mengakses ' https: // myserver / tfs / DefaultCollection / _git / Proj / ': Masalah sertifikat SSL: tidak bisa mendapatkan sertifikat penerbit lokal
Solusi :
Ekspor sertifikat yang ditandatangani sendiri root ke file. Anda dapat melakukan ini dari dalam browser Anda.
Temukan file "ca-bundle.crt" di folder git Anda (versi C saat ini: \ Program Files \ Git \ usr \ ssl \ certs tetapi telah diubah di masa lalu). Salin file ke profil pengguna Anda. Buka dengan editor teks seperti VSCode dan tambahkan konten sertifikat yang diekspor ke akhir file.
Sekarang kita harus mengkonfigurasi git untuk menggunakan file baru:
git config --global http.sslCAInfo C:/Users/<yourname>/ca-bundle.crt
Ini akan menambahkan entri berikut ke file .gitconfig Anda di root profil pengguna Anda.
[http] sslCAInfo = C:/Users/<yourname>/ca-bundle.crt
sumber
Untuk menonaktifkan verifikasi SSL untuk repositori tertentu Jika repositori sepenuhnya di bawah kendali Anda, Anda dapat mencoba:
sumber
Hati-hati bila Anda menggunakan satu kapal menggunakan sslKey atau sslCert, seperti dalam Josh Puncak 's jawabannya :
Hanya Git 2.14.x / 2.15 (Q3 2015) yang dapat menginterpretasikan path seperti
~username/mykey
dengan benar (sementara itu masih dapat menginterpretasikan path absolut seperti/path/to/privatekey
).Lihat komit 8d15496 (20 Jul 2017) oleh Junio C Hamano (
gitster
) .Dibantu-oleh: Charles Bailey (
hashpling
) .(Digabung oleh Junio C Hamano -
gitster
- dalam komit 17b1e1d , 11 Agu 2017)sumber
Menggunakan Git versi 64bit di Windows, tambahkan saja sertifikat CA yang ditandatangani sendiri ke file-file ini:
Jika itu hanya sertifikat yang ditandatangani sendiri server tambahkan ke
sumber
Periksa pengaturan antivirus dan firewall Anda.
Dari satu hari ke hari lainnya, git tidak bekerja lagi. Dengan apa yang dijelaskan di atas, saya menemukan bahwa Kaspersky menempatkan sertifikat root pribadi Anti-virus yang ditandatangani sendiri di tengah. Saya tidak berhasil membiarkan Git menerima sertifikat itu mengikuti instruksi di atas. Saya menyerah pada itu. Yang berhasil bagi saya adalah menonaktifkan fitur untuk Memindai koneksi terenkripsi.
Setelah ini, git bekerja lagi dengan sslVerify diaktifkan.
Catatan. Ini masih tidak memuaskan bagi saya, karena saya ingin fitur Anti-Virus saya aktif. Di pengaturan lanjutan, Kaspersky menunjukkan daftar situs web yang tidak akan berfungsi dengan fitur itu. Github tidak terdaftar sebagai salah satunya. Saya akan memeriksanya di forum Kaspersky. Tampaknya ada beberapa topik, misalnya https://forum.kaspersky.com/index.php?/topic/395220-kis-interfering-with-git/&tab=comments#comment-2801211
sumber
Dalam file .gitconfig Anda dapat menambahkan nilai yang diberikan di bawah ini untuk membuat sertifikat yang ditandatangani sendiri dapat diterima
sslCAInfo = /home/XXXX/abc.crt
sumber
Saya melakukannya seperti ini:
sumber
--global
! Banyak tutorial menunjukkan--global
tetapi itu adalah ide yang sangat buruk secara umum danhttp.sslVerify
khususnya. Segera setelah Anda memiliki lebih dari satu klon dari berbagai proyek, perusahaan, tim di komputer Anda dapat dengan cepat mengalami masalah. Misalnya id pengguna dan email yang bocor dari satu proyek ke proyek berikutnya bisa sangat memalukan. Dan menggunakan--global
padahttp.sslVerify
dapat membuka Anda untuk segala macam masalah keamanan. Jadi: Jangan gunakan--global
- kecuali Anda sepenuhnya menyadari efek samping dan siap mengambil risiko.Di Windows ini berfungsi untuk saya:
Tambahkan konten sertifikat yang Anda tandatangani sendiri di akhir file ca-bundle . Termasuk ----- SERTIFIKAT DIMULAI ----- dan ----- AKHIR SERTIFIKAT ----- baris
Lokasi file ca-bundle biasanya C: \ Program Files \ Git \ mingw64 \ ssl \ certs
Setelah itu, tambahkan path file ca-bundle ke global git config. Perintah berikut melakukan trik:
git config --global http.sslCAInfo "C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt"
Catatan: Path tergantung pada path lokal Anda dari file ca-bundle!
sumber
Saya menggunakan mesin windows dan artikel ini membantu saya. Pada dasarnya saya membuka ca-bundle.crt di notepad dan menambahkan sertifikat berantai di dalamnya (semuanya). Masalah ini biasanya terjadi pada jaringan perusahaan di mana kami memiliki perantara yang duduk di antara sistem dan git repo. Kita perlu mengekspor semua sertifikat dalam rantai sertifikat kecuali daun sertifikat dalam format basis 64 dan menambahkan semuanya ke ca-bundle.crt dan kemudian mengkonfigurasi git untuk file crt yang dimodifikasi ini.
sumber
Ini bukan praktik yang baik untuk mengatur http.sslVerify false. Sebaliknya, kita dapat menggunakan sertifikat SSL.
Jadi, build agent akan menggunakan https dengan sertifikat SSL dan PAT untuk otentikasi.
Salin konten file cer termasuk –begin — dan –end--.
git bash pada build agent => git config –global http.sslcainfo “C: / Program Files / Git / mingw64 / ssl / certs / ca-bundle.crt” Buka file ini dan tambahkan konten .cer.
Dengan demikian, build agent dapat mengakses sertifikat SSL
sumber
Jawaban saya mungkin terlambat tetapi itu berhasil untuk saya. Mungkin membantu seseorang.
Saya mencoba langkah-langkah yang disebutkan di atas dan itu tidak menyelesaikan masalah.
coba ini
git config --global http.sslVerify false
sumber