Saya menggunakan Git di Windows. Saya menginstal paket msysGit. Repositori pengujian saya memiliki sertifikat yang ditandatangani sendiri di server. Saya dapat mengakses dan menggunakan repositori menggunakan HTTP tanpa masalah. Pindah ke HTTPS memberikan kesalahan:
Masalah Sertifikat SSL: tidak bisa mendapatkan sertifikat penerbit lokal.
Saya memiliki sertifikat yang ditandatangani sendiri yang diinstal di Otoritas Sertifikasi Root Tepercaya dari mesin klien Windows 7 saya. Saya bisa menjelajah ke URL repositori HTTPS di Internet Explorer tanpa pesan kesalahan.
Posting blog ini oleh Philip Kelley menjelaskan bahwa cURL tidak menggunakan toko sertifikat mesin klien. Saya mengikuti saran posting blog untuk membuat salinan pribadi curl-ca-bundle.crt
dan mengkonfigurasi Git untuk menggunakannya. Saya yakin Git menggunakan salinan saya. Jika saya mengganti nama salinannya; Git mengeluh file tersebut hilang.
Saya menempelkan dalam sertifikat saya, seperti yang disebutkan dalam posting blog, saya masih mendapatkan pesan "tidak bisa mendapatkan sertifikat penerbit lokal".
Saya memverifikasi bahwa Git masih bekerja dengan mengkloning GitHub Repository melalui HTTPS.
Satu-satunya hal yang saya lihat berbeda dengan posting blog adalah sertifikat saya adalah root - tidak ada rantai untuk mencapainya. Sertifikat saya awalnya berasal dari mengklik tautan IIS8 IIS Manager 'Buat Sertifikat Mandiri'. Mungkin itu membuat sertifikat berbeda dengan apa yang diharapkan CURL.
Bagaimana saya bisa membuat Git / cURL menerima sertifikat yang ditandatangani sendiri?
{ "strict-ssl": false }
. Jangan berterima kasih padaku, terima kasih orang ini: stapp.space/fight-with-2 Saya telah berjuang dengan kesalahan ini selama hampir 5 jam, langsung !!Jawaban:
Buka Git Bash dan jalankan perintah jika Anda ingin menonaktifkan verifikasi SSL sepenuhnya.
Catatan: Solusi ini dapat membuka Anda ke serangan seperti serangan man-in-the-middle . Karenanya aktifkan verifikasi lagi sesegera mungkin:
sumber
git -c http.sslVerify=false clone https://domain.com/path/to/git
Masalahnya adalah bahwa git secara default menggunakan "Linux" crypto backend.
Dimulai dengan Git untuk Windows 2.14, sekarang Anda dapat mengonfigurasi Git untuk menggunakan SChannel, lapisan jaringan Windows bawaan sebagai backend crypto. Ini berarti Anda akan menggunakan mekanisme penyimpanan sertifikat Windows dan Anda tidak perlu mengkonfigurasi secara eksplisit mekanisme penyimpanan CA curl: https://msdn.microsoft.com/en-us/library/windows/desktop/aa380123(v= vs.85) .aspx
Eksekusi saja:
Itu seharusnya membantu.
Menggunakan schannel sekarang adalah pengaturan standar ketika menginstal git untuk windows, juga dianjurkan untuk tidak memeriksa repositori oleh SSH dan jika memungkinkan, karena https lebih mudah untuk dikonfigurasikan dan kecil kemungkinannya untuk diblokir oleh firewall itu berarti lebih kecil kemungkinannya untuk gagal.
sumber
git config --global http.sslCAInfo <my-server-self-signed-cert.pem>
gagal berfungsi. Saya mengkonfigurasihttp.sslCAInfo
untuk menggunakan sertifikat yang ditandatangani sendiri untuk server saya, dan itulah alasannya (mungkin tidak sama dengan OP) sehingga saya menemui "Masalah Sertifikat SSL: tidak bisa mendapatkan sertifikat penerbit lokal" ketika saya melakukan misgit clone https://github.com/Microsoft/vscode.git
. A. Akhirnya saya menggunakan jawaban dari stackoverflow.com/a/47196562/1323552 (Ben PP Tung) untuk menyetel konfigurasi sslCAInfo khusus saya ke server git saya untuk menyelesaikannya.Saya punya masalah ini juga. Dalam kasus saya, saya mencoba untuk mendapatkan kait Git pasca-terima untuk memperbarui salinan yang berfungsi pada server dengan setiap dorongan. Mencoba mengikuti instruksi di blog yang Anda tautkan. Tidak bekerja untuk saya juga dan mengesampingkan pengaturan pada basis per pengguna tampaknya tidak berfungsi baik.
Yang akhirnya harus saya lakukan adalah menonaktifkan verifikasi SSL (seperti yang disebutkan dalam artikel) untuk Git secara keseluruhan. Bukan solusi yang sempurna, tetapi itu akan berhasil sampai saya dapat menemukan yang lebih baik.
Saya mengedit file teks konfigurasi Git (dengan aplikasi netral akhir baris favorit saya seperti Notepad ++) yang terletak di:
Di blok [http], saya menambahkan opsi untuk menonaktifkan sslVerify. Itu terlihat seperti ini ketika saya selesai:
Itu berhasil.
CATATAN:
Ini menonaktifkan verifikasi SSL dan tidak direkomendasikan sebagai solusi jangka panjang.
Anda dapat menonaktifkan ini per-repositori yang masih tidak bagus, tetapi melokalisasi pengaturan.
Dengan munculnya LetsEncrypt.org, sekarang cukup sederhana, otomatis dan bebas untuk mengatur SSL sebagai alternatif untuk sertifikat yang ditandatangani sendiri dan meniadakan kebutuhan untuk mematikan sslVerify.
sumber
sslCAinfo
entri konfigurasi; tapi saya tidak memilih jawaban karena tidak masuk akal untuk menonaktifkan SSL secara permanen untuk seluruh sistem git (sudahkah Anda mencoba untuk menonaktifkannya di seluruh sistem, kemudian mengkloning, kemudian mengaktifkan kembali dan kemudian menonaktifkannya di konfigurasi git lokal untuk repo yang baru dikloning?).git -c http.sslVerify=false clone https://...
kiddailey Saya pikir sudah cukup dekat, namun saya tidak akan menonaktifkan verifikasi ssl melainkan hanya menyediakan sertifikat lokal:
Dalam file konfigurasi Git
Atau melalui baris perintah:
sumber
git config --global http.sslCAinfo /usr/ssl/certs/ca-bundle.crt
git config --global http.sslCAinfo /c/Program\ Files\ \(x86\)/Git/bin/curl-ca-bundle.crt
git config --global http.sslCAinfo /opt/local/share/curl/curl-ca-bundle.crt
git config --list --show-origin
untuk melihat di mana konfigurasi http.sslCAinfo diaturSaya menghadapi masalah ini juga. Dan akhirnya diselesaikan dengan mendapatkan panduan dari Blog MSDN ini .
Memperbarui
Sebenarnya Anda perlu menambahkan sertifikat di file sertifikat git curl-ca-bundel.cert yang berada di direktori Git \ bin.
Langkah
Akhirnya periksa statusnya. Harap perhatikan bahwa file curl-ca-bundle.crt cadangan sebelum diedit agar tetap aman.
sumber
ca-bundle.crt
dan berlokasi dimingw64\ssl\certs
ataumingw32\ssl\certs
.Jawaban untuk pertanyaan ini Menggunakan makecert untuk Pengembangan SSL memperbaiki ini untuk saya.
Saya tidak tahu mengapa, tetapi sertifikat yang dibuat oleh tautan sederhana 'Buat Sertifikat Mandiri' di IIS Manager tidak berhasil. Saya mengikuti pendekatan dalam pertanyaan terkait membuat dan memasang CA Root yang ditandatangani sendiri; kemudian menggunakannya untuk mengeluarkan Sertifikat Otentikasi Server untuk server saya. Saya menginstal keduanya di IIS.
Itu membuat situasi saya sama dengan posting blog yang dirujuk dalam pertanyaan awal. Setelah sertifikat root disalin / ditempelkan ke curl-ca-bundle.crt, git / curl combo puas.
sumber
Untuk menghindari penonaktifan verifikasi ssl sepenuhnya atau menduplikasi / meretas file sertifikat CA yang dibundel yang digunakan oleh git, Anda dapat mengekspor rantai sertifikat host menjadi file , dan membuat git menggunakannya:
Jika itu tidak berhasil, Anda dapat menonaktifkan verifikasi ssl hanya untuk host:
Catatan: Di bawah kemungkinan orang dalam serangan tengah saat verifikasi ssl dimatikan.
sumber
--global
opsi tidak diperlukan: jika Anda menghilangkan--global
, pengaturan hanya berlaku untuk repo git tertentu.Saya baru saja mengalami masalah yang sama tetapi menggunakan sourcetree di windows Langkah yang sama untuk GIT normal pada Windows juga. Mengikuti langkah-langkah berikut ini saya bisa menyelesaikan masalah ini.
Ini harus menyelesaikan masalah Anda dengan sertifikat yang ditandatangani sendiri dan menggunakan GIT.
Saya mencoba menggunakan konfigurasi "http.sslcapath" tetapi ini tidak berhasil. Juga jika saya tidak memasukkan seluruh rantai dalam file sertifikat maka ini juga akan gagal. Jika ada yang punya petunjuk tentang ini, beri tahu saya karena hal di atas harus diulang untuk pemasangan baru.
Jika ini adalah sistem GIT maka Anda dapat menggunakan opsi dalam ALAT -> opsi tab GIt untuk menggunakan sistem GIT dan ini kemudian menyelesaikan masalah dalam sourcetree juga.
sumber
Dalam kasus repositori github (atau sertifikat yang tidak ditandatangani sendiri) , memilih di bawah ini saat menginstal Git-on-windows, menyelesaikan masalah.
sumber
Saya pernah mengalami masalah ini sebelumnya, dan menyelesaikannya menggunakan konfigurasi berikut.
[http "https://your.domain"] sslCAInfo=/path/to/your/domain/priviate-certificate
Sejak git 2.3.1, Anda dapat menggunakan
https://your.domain
setelah http untuk menunjukkan bahwa sertifikat berikut hanya untuk itu.sumber
git config --global http.sslCAInfo <your-server-self-signed-cert.pem>
sebelumnya (Oleh karena itu menyebabkan kesalahan "tidak dapat memperoleh sertifikat penerbit lokal")C:\Program Files\Git\bin
danC:\Program Files\Git\mingw64\bin
Kemudian coba sesuatu seperti:
git clone https://github.com/heroku/node-js-getting-started.git
sumber
Satu hal yang mengacaukan saya adalah format path (pada PC Windows saya). Saya awalnya punya ini:
Tetapi itu gagal dengan kesalahan "tidak dapat memperoleh sertifikat penerbit lokal".
Yang akhirnya berhasil adalah ini:
sumber
Dalam kasus saya, karena saya telah menginstal Terminal ConEmu untuk Window 7, itu menciptakan
ca-bundle
instalasi selama diC:\Program Files\Git\mingw64\ssl\certs
.Jadi, saya harus menjalankan perintah-perintah berikut pada terminal untuk membuatnya berfungsi:
Karenanya, saya
C:\Program Files\Git\etc\gitconfig
berisi yang berikut ini:Juga, saya memilih opsi yang sama seperti yang disebutkan di sini ketika menginstal Git.
Semoga itu bisa membantu!
sumber
Untuk memperbaiki kesalahan spesifik, masalah sertifikat SSL: tidak dapat memperoleh sertifikat penerbit lokal di git
Saya memiliki masalah yang sama dengan sertifikat Mari Enkripsi.
Situs web dengan https yang kami butuhkan:
tapi git pull mengatakan:
Untuk memperbaikinya, kita juga perlu menambahkan:
sumber
Gunakan perintah ini sebelumnya untuk menjalankan pembaruan komposer / instal:
sumber