Bagaimana cara menetapkan GIT_SSL_NO_VERIFY hanya untuk repo tertentu?

283

Saya harus menggunakan server git tanpa sertifikat yang tepat, tetapi saya tidak mau harus melakukannya

env GIT_SSL_NO_VERIFY=true git command

setiap kali saya melakukan operasi git. Tetapi saya juga ingin membiarkan SSL diaktifkan untuk repositori git lainnya. Apakah ada cara untuk menjadikan ini lokal untuk satu repo?

Charles Randall
sumber
f15ijp.com/2012/08/... salah satu solusi terbaik yang saya temukan
vikas etagi

Jawaban:

541

Anda dapat melakukan

git config http.sslVerify "false"

di repo spesifik Anda untuk menonaktifkan sertifikat SSL yang memeriksa hanya repo itu.

Joachim Isaksson
sumber
55
git config --global http.sslTerverifikasi "false"
roothahn
24
--Global TIDAK boleh digunakan karena OP telah secara khusus meminta dia hanya menginginkannya untuk repo tertentu.
Kannan Ekanath
9
Catatan: Tampaknya --globalopsi IS diperlukan ketika repo TIDAK diperiksa (tidak dapat mengatur opsi untuk repo yang belum ada secara lokal). Satu selalu dapat menyalakannya kembali setelah.
James Wilkins
2
Saya memutar kembali hasil edit, karena pertanyaan yang secara khusus tidak menanyakan hal ini ditambah itu adalah ide yang buruk untuk menonaktifkan ini secara global karena alasan keamanan.
Étienne
2
Saya memutar kembali hasil edit, untuk alasan yang sama seperti di atas. Pertanyaan ini tentang repo tertentu. Jika Anda ingin jawaban untuk semua repo, itu harus menjadi pertanyaan terpisah.
Calimo
121

Anda bisa melakukannya sebagai berikut

Untuk satu repo

git config http.sslVerify false

Untuk semua repo

git config --global http.sslVerify false
Thirumalai murugan
sumber
7
Ini akan menonaktifkan verifikasi SSL untuk semua repositori. Pertanyaan aslinya adalah tentang membuatnya lokal ke repositori tunggal.
Gwynne Raskind
4
Kenapa Anda menggunakan sudo sama sekali? repositori lokal tidak memerlukannya, dan konfigurasi pengguna dalam $ HOME (apa pun yang ada di sistem Anda) sehingga tidak perlu sudo juga.
mcepl
@ ParthianShot jika mereka bukan pengguna admin, bagaimana mereka bisa menggunakan ini tanpa sudo?
Thirumalai murugan
1
@Thirumalaimurugan Apa kamu serius sekarang? sudoseharusnya hanya digunakan ketika Anda benar-benar membutuhkan root untuk melakukan sesuatu. Seperti menginstal perangkat lunak baru, memodifikasi file sistem penting, memformat ulang drive, mengkonfigurasi ulang jaringan, mengelola layanan ... Tidak ada dalam pertanyaan orang ini yang menyiratkan bahwa ia memerlukan root untuk melakukan apa pun. Jika Anda seorang administrator, Anda harus menjalankan sebagian besar perintah Anda - termasuk perintah yang mengubah konfigurasi Anda - tanpa sudo sebagian besar waktu.
Parthian Shot
1
@HolaSoyEduFelizNavidad, Ketika OP mengatakan "untuk semua repo," OP berarti "semua repo untuk pengguna ini," bukan "semua repo di komputer."
vy32
98

Seperti apa yang dikatakan Thirumalai, tetapi di dalam repositori hasil kloning dan tanpa itu --global. Yaitu,

  1. GIT_SSL_NO_VERIFY=true git clone https://url
  2. cd <directory-of-the-clone>
  3. git config http.sslVerify false
mcepl
sumber
Solusi yang bagus untuk kasus-kasus ketika Andacould not lock global config file .gitconfig: Permission denied
antongorodezkiy
1
Jika Anda memiliki Izin ditolak pada .gitconfig ada sesuatu yang serius ske * ed dengan sistem Anda. $ HOME Anda harus tersedia untuk Anda (di mana .gitconfig seharusnya, bukan?).
mcepl
Ini sebenarnya bukan server saya. Tapi terima kasih. Dan saya menghapus path dari pesan kesalahan, sebenarnya pada server git sedang mencoba mengakses .gitconfig di suatu tempat di/var/www/...
antongorodezkiy
Jawaban ini juga memiliki beberapa penjelasan tentang opsi. stackoverflow.com/a/11622001
dragon788
2
export GIT_SSL_NO_VERIFY = true
ETech
11

Khususnya jika Anda membutuhkan klon rekursif

GIT_SSL_NO_VERIFY=true git clone --recursive https://github.com/xx/xx.git
pengguna5958256
sumber
10

Jika Anda menggunakan mesin Windows dan menginstal Git, Anda dapat mencoba langkah-langkah di bawah ini:

  1. Buka folder instalasi Git, mis: C: \ Program Files (x86) \ Git \ dll
  2. Edit file: gitconfig
  3. Di bawah bagian [http] , tambahkan baris: sslVerify = false

    [http]
      sslVerify = false
    
shasi kanth
sumber
1
ini juga tidak memenuhi pertanyaan di atas di mana dia mengatakan dia tidak ingin mempengaruhi repo lainnya.
bryanmac
dan Ini sangat membantu ketika Anda tidak dapat menjalankan perintah git! (ig memiliki sourcetree pada mesin virtual windows dan menempatkan folder src di jalur UNC di mana terminal sorcetree built-in tidak dapat mengenali!
danrah
1
thx, ini berhasil, entah bagaimana perbaikan baris perintah tidak berfungsi.
Nrj
Untuk pengguna TortoiseGit, Anda dapat mengedit bagian ini ke dalam file konfigurasi lokal dengan melakukan pembaruan Pengaturan khusus konteks dan memilih opsi untuk mengedit hanya lokal
Steve Townsend
5

Ada cara mudah mengkonfigurasi GIT untuk menangani server Anda dengan cara yang benar. Cukup tambahkan bagian http khusus untuk server git Anda dan tentukan sertifikat mana (yang disandikan Base64) untuk dipercaya:

~ / .gitconfig

[http "https://repo.your-server.com"]
# windows path use double back slashes
#  sslCaInfo = C:\\Users\\<user>\\repo.your-server.com.cer
# unix path to certificate (Base64 encoded)
sslCaInfo = /home/<user>/repo.your-server.com.cer

Dengan cara ini Anda tidak akan lagi memiliki kesalahan SSL dan memvalidasi (biasanya) sertifikat yang ditandatangani sendiri. Ini adalah cara terbaik untuk pergi, karena melindungi Anda dari serangan man-in-the-middle. Saat Anda menonaktifkan verifikasi ssl, Anda rentan terhadap serangan semacam ini.

https://git-scm.com/docs/git-config#git-config-httplturlgt

Matthias B
sumber
5

Jika Anda harus menonaktifkan pemeriksaan SSL untuk satu server git yang menampung beberapa repositori, Anda dapat menjalankan:

git config --bool --get-urlmatch http.sslverify https://my.bad.server false

(Jika Anda masih menggunakan git <v1.8.5, jalankan git config --global http.https://my.bad.server.sslVerify false)

Penjelasan dari dokumentasi di mana perintah berada di akhir, menunjukkan .gitconfigkonten yang tampak seperti:

[http "https://my.bad.server"]
        sslVerify = false

Ini akan mengabaikan semua pemeriksaan sertifikat untuk server ini, apa pun repositori.

Anda juga memiliki beberapa penjelasan dalam kode

Mat M
sumber
4

Ini bekerja untuk saya:

git init
git config --global http.sslVerify false
git clone https://myurl/myrepo.git
Tadej
sumber
2

Pertanyaan ini terus muncul dan saya belum menemukan hasil yang memuaskan, jadi inilah yang bekerja untuk saya (berdasarkan jawaban sebelumnya https://stackoverflow.com/a/52706362/1806760 , yang tidak berfungsi):

Server saya https://gitlab.devdengan sertifikat yang ditandatangani sendiri.

Jalankan pertama git config --system --edit(dari prompt perintah yang ditinggikan, ubah --systemke --globaljika Anda ingin melakukannya hanya untuk pengguna Anda), lalu masukkan cuplikan berikut setelah [http]bagian sebelumnya :

[http "https://gitlab.dev"]
        sslVerify = false

Kemudian periksa apakah Anda melakukan semuanya dengan benar:

> git config --type=bool --get-urlmatch http.sslVerify https://gitlab.dev
false
mrexodia
sumber
1

untuk windows, jika Anda ingin konfigurasi global, kemudian jalankan

git config --global http.sslVerify false
Pengodean
sumber
OP meminta specific repossecara eksplisit
malat
0

Di Linux, jika Anda memanggil ini di dalam folder repositori git:

git config http.sslVerify false

ini akan menambahkan sslVerify = falsedi [http]bagian configfile di .gitfolder, yang juga bisa menjadi solusi, jika Anda ingin menambahkan ini secara manual dengan nano .git/config:

...
[http]
  sslVerify = false
rubo77
sumber