Sertifikat SSL menolak mencoba mengakses GitHub melalui HTTPS di balik firewall

390

Saya terjebak di belakang firewall sehingga harus menggunakan HTTPS untuk mengakses repositori GitHub saya. Saya menggunakan cygwin 1.7.7 pada Windows XP.

Saya sudah mencoba mengatur remote ke https://[email protected]/username/ExcelANT.git, tetapi mendorong meminta kata sandi, tetapi tidak melakukan apa-apa begitu saya memasukkannya. https://username:<password>github.com/username/ExcelANT.gitdan kloning repo kosong dari awal tetapi setiap kali itu memberi saya kesalahan yang sama

kesalahan: masalah sertifikat SSL, verifikasi bahwa sertifikat CA adalah OK. Detail:
kesalahan: 14090086: Rutinitas SSL: SSL3_GET_SERVER_CERTIFICATE: verifikasi sertifikat gagal saat mengakses https://github.com/username/ExcelANT.git/info/refs

Menyalakan GIT_CURL_VERBOSE=1memberi saya

* Akan terhubung () ke port github.com 443 (# 0)
* Mencoba 207.97.227.239 ... * berhasil menetapkan lokasi verifikasi sertifikat:
* CAfile: tidak ada
CApath: / usr / ssl / certs
* Masalah sertifikat SSL, verifikasi bahwa sertifikat CA baik-baik saja. Detail:
kesalahan: 14090086: Rutinitas SSL: SSL3_GET_SERVER_CERTIFICATE: verifikasi sertifikat gagal
* Berakhir masa berlaku
* Koneksi penutupan # 0
* Akan terhubung () ke port github.com 443 (# 0)
* Mencoba 207.97.227.239 ... * berhasil mengatur sertifikat verifikasi lokasi:
* CAfile: tidak ada
CApath: / usr / ssl / certs
* Masalah sertifikat SSL, verifikasi bahwa sertifikat CA adalah OK. Detail:
kesalahan: 14090086: Rutinitas SSL: SSL3_GET_SERVER_CERTIFICATE: verifikasi sertifikat gagal
* Kedaluwarsa dihapus
*
Kesalahan koneksi penutupan # 0 : Masalah sertifikat SSL, verifikasi bahwa sertifikat CA OK. Detail:
kesalahan: 14090086: Rutinitas SSL: SSL3_GET_SERVER_CERTIFICATE: verifikasi sertifikat gagal saat mengakses https://github.com/username/ExcelANT.git/info/refs

fatal: HTTP request failed

Apakah ini masalah dengan firewall saya, cygwin atau apa?

Saya belum menetapkan proxy HTTP di konfigurasi Git, namun ini adalah server ISA yang membutuhkan otentikasi NTLM, bukan dasar, jadi kecuali ada yang tahu cara memaksa git untuk menggunakan NTLM, saya batal.

oharab
sumber
Jika saya menetapkan http.sslVerify false maka koneksi akan aman? dan apakah itu jalan yang baik untuk digunakan? Di antara kita menggunakan pfsense firewall. saat ini, file .gitconfig pada profil pengguna kosong.
Nullpointer

Jawaban:

57

Jangan lewatkan jawaban ini jika Anda ingin memperbaiki masalah sertifikat. Jawaban ini berkaitan dengan tunneling ssh melalui firewall yang merupakan solusi yang lebih baik untuk menangani firewall / proxy.

Ada cara yang lebih baik daripada menggunakan akses http dan itu adalah dengan menggunakan layanan ssh yang ditawarkan oleh github pada port 443 dari server ssh.github.com.

Kami menggunakan alat yang disebut pembuka botol. Ini tersedia untuk CygWin (melalui pengaturan dari beranda cygwin) dan Linux menggunakan alat pengemasan favorit Anda. Untuk MacOSX tersedia dari macports dan setidaknya menyeduh.

Perintahnya adalah sebagai berikut:

$ corkscrew <proxyhost> <proxyport> <targethost> <targetport> <authfile>

Proxyhost dan proxyport adalah koordinat proksi https. Targethost dan targetport adalah lokasi host to tunnel to. Authfile adalah file teks dengan 1 baris yang berisi nama pengguna / kata sandi server proxy Anda yang dipisahkan oleh tanda titik dua

misalnya:

abc:very_secret

Instalasi untuk menggunakan protokol ssh "normal" untuk komunikasi git

Dengan menambahkan ini ke ~/.ssh/configtrik ini dapat digunakan untuk koneksi ssh normal.

Host github.com
  HostName ssh.github.com
  Port 443
  User git
  ProxyCommand corkscrew <proxyhost> <proxyport> %h %p ~/.ssh/proxy_auth

sekarang Anda dapat mengujinya bekerja dengan ssh-ing ke gitproxy

pti@pti-laptop:~$ ssh github.com
PTY allocation request failed on channel 0
Hi ptillemans! You've successfully authenticated, but GitHub does not provide shell access.
       Connection to github.com closed.
pti@pti-laptop:~$

(Catatan: jika Anda belum pernah masuk ke github sebelumnya, ssh akan meminta untuk menambahkan kunci server ke file host yang dikenal. Jika Anda paranoid, disarankan untuk memverifikasi sidik jari RSA dengan yang ditunjukkan pada situs github di mana Anda mengunggah kunci Anda).

Sedikit variasi pada metode ini adalah kasus ketika Anda perlu mengakses repositori dengan kunci lain, misalnya untuk memisahkan akun pribadi Anda dari akun profesional Anda.

# 
# account dedicated for the ACME private github account 
#
Host acme.github.com
  User git
  HostName ssh.github.com
  Port 443
  ProxyCommand corkscrew <proxyhost> <3128> %h %p ~/.ssh/proxy_auth
  IdentityFile ~/.ssh/id_dsa_acme

Nikmati!

Kami telah menggunakan ini selama bertahun-tahun sekarang di Linux, Mac dan Windows.

Jika mau, Anda dapat membaca lebih lanjut tentang hal ini di posting blog ini

Peter Tillemans
sumber
Saya menyerah untuk menjalankan ini, tetapi melihat lagi, dan membuatnya bekerja. mengubah .ssh / config ke> Host ssh.github.com >User oharab >Hostname ssh.github.com >Port 443 >PreferredAuthentications publickey >IdentityFile ~/.ssh/id_rsa dan mengkloning menggunakan git clone [email protected]:oharab/log4vba.gitmembuatnya dan berjalan dalam waktu singkat.
oharab
1
Saya hanya downvoting karena jawaban di bawah ini lebih membantu tetapi sayangnya stackoverflow selalu menempatkan jawaban yang diterima teratas, bahkan jika itu hanya jawaban untuk keadaan tunggal.
mjaggard
1
Dalam hal apa pun saya memperbarui jawabannya karena saya menemukan bahwa tunneling SSL melalui https proxy masih merupakan solusi yang lebih baik daripada mengutak-atik sertifikat HTTPS atau menonaktifkannya dan berakhir dengan solusi yang masih kurang berkinerja, ramah pengguna, dan kurang aman. Yah, banyak upvotes membuktikan saya salah, tapi saya tetap berpegang pada pendapat saya dalam masalah ini.
Peter Tillemans
523

Masalahnya adalah Anda tidak memiliki sertifikat Otoritas Sertifikasi yang diinstal pada sistem Anda. Dan sertifikat ini tidak dapat diinstal dengan setup.exe cygwin.

Pembaruan: Instal paket Net / ca-sertifikat di cygwin (terima kasih dirkjot)

Ada dua solusi:

  1. Sebenarnya menginstal sertifikat root. Curl guys diekstraksi untuk Anda sertifikat dari Mozilla .

    cacert.pemFile adalah apa yang Anda cari. File ini mengandung> 250 sertifikat CA (tidak tahu bagaimana mempercayai jumlah ppl ini). Anda perlu mengunduh file ini, membaginya menjadi masing-masing sertifikat, letakkan di / usr / ssl / certs (CApath Anda) dan indekskan.

    Inilah cara melakukannya. Dengan cygwin setup.exe, instal curl dan jalankan paket openssl:

    $ cd /usr/ssl/certs
    $ curl http://curl.haxx.se/ca/cacert.pem |
      awk '{print > "cert" (1+n) ".pem"} /-----END CERTIFICATE-----/ {n++}'
    $ c_rehash

    Penting : Untuk menggunakan c_rehashAnda harus menginstal openssl-perljuga.

  2. Abaikan verifikasi sertifikat SSL.

    PERINGATAN: Menonaktifkan verifikasi sertifikat SSL memiliki implikasi keamanan. Tanpa verifikasi keaslian koneksi SSL / HTTPS, penyerang jahat dapat menyamaratakan titik akhir tepercaya (seperti GitHub atau host Git jarak jauh lainnya), dan Anda akan rentan terhadap Serangan Manusia-dalam-Tengah . Pastikan Anda benar-benar memahami masalah keamanan dan model ancaman Anda sebelum menggunakan ini sebagai solusi.

    $ env GIT_SSL_NO_VERIFY=true git clone https://github...
    
Alexey Vishentsev
sumber
9
Anda tidak perlu menginstal curl, cukup gunakan wget:wget -O - http://curl.haxx.se/ca/cacert.pem | awk 'split_after==1{n++;split_a fter=0} /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}'
Deebster
38
Saya tahu ini adalah cygwin, tetapi kalau-kalau ada yang datang ke sini menggunakan Centos, ini / etc / pki / tls / certs di mana .pem's harus pergi.
Hentikan memfitnah Monica Cellio
2
Tidak bekerja untuk saya - namun, saya tidak memiliki c_rehash di jalur saya. Saya mencoba me-restart shell saya. Saya juga harus mkdir -p / usr / ssl / certs. Saya ingin tahu apakah penginstalan Cygwin saya berbeda atau hilang? Juga, pengaturan GIT_SSL_NO_VERIFY = true diikuti dengan menjalankan operasi klon menghasilkan kesalahan ini: fatal: https://code.google.com/.../info/refs not found: did you run git update-server-info on the server?Mungkin ini akan bekerja setelah reboot?
Jeff Axelrod
7
Jawaban ini salah. Cukup instal ca-certificatespaket cygwin untuk mendapatkan sertifikat root yang hilang. Mengapa jawaban ini begitu banyak naik?
rurban
32
Jangan mematikan verifikasi sertifikat SSL. Ini terjadi terlalu sering pada alat dan kode aplikasi di seluruh industri. Ini membuka Anda hingga seorang pria dalam serangan tengah. Jika Anda akan menggunakan SSL maka gunakan dengan benar.
Tim
430

Catatan: menonaktifkan verifikasi SSL memiliki implikasi keamanan . Ini memungkinkan serangan Man in the Middle ketika Anda menggunakan Git untuk mentransfer data melalui jaringan. Pastikan Anda sepenuhnya memahami implikasi keamanan sebelum menggunakan ini sebagai solusi. Atau lebih baik lagi, instal sertifikat root.

Salah satu caranya adalah dengan menonaktifkan verifikasi SSL CERT:

git config --global http.sslVerify false

Ini akan mencegah CURL untuk memverifikasi sertifikasi HTTPS.

Hanya untuk satu repositori:

git config http.sslVerify false
Yi Zhao
sumber
17
Jika Anda tidak ingin mengedit pengaturan global Anda (mis. Semua repo), kecualikan --global
Erin
57
dapatkah Anda menambahkan catatan tentang betapa berbahayanya ini?
Kronik
26
ini ide yang buruk. ada alasan bahwa sertifikat harus diverifikasi. jika Anda tidak memverifikasi sertifikat sebagai tepercaya maka sertifikat tersebut dapat dibuat oleh siapa saja dan Anda bisa rentan terhadap seorang pria di tengah serangan.
Mark Carey
24
Jangan matikan verifikasi SSL!
Tim
14
Untuk semua orang "jangan lakukan itu": Tentu ini bukan pendekatan yang paling aman sama sekali. TETAPI, itu pilihan yang jauh lebih baik untuk tidak memiliki SSL sama sekali! Karena beberapa orang menjalankan hanya server git pribadi mereka yang sederhana, itu baik untuk mereka. Tentu, untuk keamanan nyata itu adalah pengaturan TIDAK PERGI. Yang paling tidak aman adalah mengirim byte polos melalui jaringan.
Peter Stegnar
109

Saya ingin Git menggunakan bundel sertifikat yang diperbarui tanpa mengganti yang digunakan seluruh sistem saya. Inilah cara agar Git menggunakan file tertentu di direktori home saya:

mkdir ~/certs
curl http://curl.haxx.se/ca/cacert.pem -o ~/certs/cacert.pem

Sekarang perbarui .gitconfiguntuk menggunakan ini untuk verifikasi rekan:

[http]
sslCAinfo = /home/radium/certs/cacert.pem

Catatan saya menggunakan jalur absolut. Git tidak melakukan ekspansi jalur di sini, jadi Anda tidak dapat menggunakan ~tanpa kludge yang jelek. Atau, Anda dapat melewatkan file konfigurasi dan mengatur lintasan melalui variabel lingkunganGIT_SSL_CAINFO sebagai gantinya.

Untuk memecahkan masalah ini, atur GIT_CURL_VERBOSE=1. Path file CA yang digunakan Git akan ditampilkan pada baris yang dimulai dengan "CAfile:" di output.

kenchilada
sumber
12
Bagi saya, ini adalah jawaban terbaik: ia bekerja di unix (sebenarnya NetBSD), itu hanya mempengaruhi git dan bukan hal lain pada sistem, dan tidak memerlukan akses root / Administrator. Terima kasih!
Eric
1
Sempurna, seseorang bahkan dapat melakukan yang lebih baik. Saya telah mengganti yang lama /etc/ssl/certs/ca-certificates.crtdi Ubuntu 8.04 LTS saya dengan file ini dan secara ajaib bekerja!
Michael-O
1
@Eric, terima kasih telah menyebutkan NetBSD karena artinya saya menemukan jawaban ini. NetBSD agak aneh. Saya menginstal paket OpenSSL, tetapi bahkan itu tidak memberi Anda sertifikat, hanya direktori placeholder.
atomic
+200 Lebih mengagumkan, ini juga bekerja di kotak Ubuntu saya. Tidak perlu menonaktifkan pemeriksaan sertifikat di git, lakukan saja perbaikan cepat ini.
Colin D Bennett
11
Jawaban luar biasa, Anda dapat melewati pengeditan tangan file ~ / .gitconfig dengan perintah berikut:git config --global http.sslCAinfo "$HOME/certs/cacert.pem"
Aron Ahmadia
41

Perhatikan bahwa bagi saya agar ini berfungsi (instal RVM pada CentOS 5.6), saya harus menjalankan yang berikut:

export GIT_SSL_NO_VERIFY=true

dan setelah itu, prosedur instalasi standar untuk melengkungkan installer RVM ke bash berhasil :)

seanp2k
sumber
13
efek yang sama dengan git config --global http.sslverify false
Dyno Fu
20
Ini SANGAT BERBAHAYA! Inti dari verifikasi sertifikat SSL adalah untuk melindungi kode Anda dari gangguan ketika Anda mentransmisikannya melalui HTTPS! Menonaktifkan itu berarti bahwa orang jahat dapat memasukkan kerentanan dan hal-hal buruk lainnya ke dalam kode Anda saat Anda mendorong dan mengambilnya!
Jika saya menetapkan http.sslVerify false maka koneksi akan aman? dan apakah itu jalan yang baik untuk digunakan? Di sela-sela kita menggunakan pfsense firewall
Nullpointer
@Ravi koneksi secara teknis akan berfungsi, ya, tapi itu jelas bukan ide yang baik. Jika kedua asal git Anda dan mesin lokal internal dan di bawah kendali organisasi Anda, itu mungkin lumayan , tetapi sesuai komentar pengguna456814, menonaktifkan verifikasi membuka Anda hingga serangan MITM.
Doktor J
40

Solusi yang sangat sederhana: ganti https: // dengan git: //

Gunakan git: //the.repository alih-alih https: //the.repository dan akan berfungsi.

Saya punya masalah ini pada Windows dengan TortoiseGit dan ini menyelesaikannya.

klodoma
sumber
Saya kira ini berfungsi karena tidak memverifikasi ssl untuk git://. Sebagaimana dinyatakan dalam jawaban di atas , menonaktifkan verifikasi ssl adalah risiko keamanan.
danijar
5
@danijar alasan mengapa ini berhasil adalah karena ia bahkan tidak menggunakan SSL sama sekali . The git://protokol menggunakan SSH, yang menggunakan SSH pasangan kunci publik dan swasta untuk otentikasi dan enkripsi, bukan sertifikat SSL.
11
@Cupcake git://tidak tidak menggunakan SSH. Lihat Protokol SSH dan Protokol Git .
nyuszika7h
@ nyuszika7h oh, kamu benar. Saya terus git://bingung [email protected]:user/project.git, yaitu sintaksis SCP-ish .
31

Sebagai jawaban paling populer (oleh Alexey Vishentsev):

Masalahnya adalah Anda tidak memiliki sertifikat Otoritas Sertifikasi yang diinstal pada sistem Anda. Dan sertifikat ini tidak dapat diinstal dengan setup.exe cygwin.

Namun, pernyataan terakhir itu salah (sekarang, atau selalu, saya tidak tahu).

Yang harus Anda lakukan adalah pergi ke pengaturan cygwin dan termasuk paket 'ca-sertifikat' (itu di bawah Net). Ini berhasil bagi saya.

dirkjot
sumber
1
cygwin git error menunjukkan CAfile: /etc/ssl/ca-bundle.crtsedangkan cygwin ca-sertifikat menginstal paket /usr/ssl/certs/ca-bundle.crt. Oleh karena itu, harus mengedit ~/.gitconfiguntuk menentukan lokasi: [http]lalusslCAinfo = /usr/ssl/certs/ca-bundle.crt
maxpolk
@maxpolk: Saya akan membuat tautan tetapi efeknya sama. Ini jelas bug di cygwin git, sudahkah Anda mempertimbangkan untuk menaikkan tiket? sudo ln -s /usr/ssl/certs/ca-bundle.crt /etc/ssl/
dirkjot
Pada hari ini 2013-5-23, cygwin git berfungsi dengan baik di https: jika Anda juga memiliki / ingat untuk menginstal cygwin ca-certificates.
bobbogo
Saya sampai di sini dari pertanyaan ini , yang mengindikasikan bahwa jawaban dapat ditemukan di sini. Namun, baik jawaban terkait maupun jawaban ini tidak cocok untuk saya; TortoiseSVN terus mengeluarkanerror: SSL certificate problem, verify that the CA cert is OK.
ATAU Mapper
Di mana tepatnya kita menginstal file instalasi cygwin dari manajer paket? Apakah sertifikat-ca harus berada dalam folder bin dari Git?
221b
16

Saya tahu daftar pertanyaan asli Cygwin, tetapi di sini adalah solusi untuk CentOS:

curl http://curl.haxx.se/ca/cacert.pem -o /etc/pki/tls/certs/ca-bundle.crt

Sumber: http://eric.lubow.org/2011/security/fixing-centos-root-certificate-authority-issues/

Herman J. Radtke III
sumber
Ini bekerja sangat baik untuk saya; Anda mungkin harus membuat cadangan dari aslinya terlebih dahulu, seperti yang disarankan OP. Sepertinya ini terjadi ketika Github memperbarui sertifikat mereka, jika Anda menggunakan sistem yang memiliki yang lebih lama.
Evan Donovan
Pada CentOS 5 saya memperbaikinya yum update openssl, yang juga memperbarui ca-bundle.
raarts
jika Anda akan mengikuti opsi ini, maka Anda harus memverifikasi hash SHA-256 file sebelum menggunakannya. Anda dapat memperoleh sha256sum untuk file saat ini dengan beberapa cara lain selain ikal yang Anda atur (seperti browser pada mesin yang berbeda yang sudah diatur dengan aman) dan kemudian membandingkannya dengan output sha256sum /etc/pki/tls/certs/ca-bundle.crtuntuk memastikan Anda mendapat hak mengajukan.
kbolino
16

Untuk mengkloning di windows sambil mengatur SSL memverifikasi ke false:

    git -c http.sslVerify=false clone http://example.com/e.git

Jika Anda ingin mengkloning tanpa membuat pengaturan global Anda.

FlavorScape
sumber
14

Pada CentOS 5.x, sederhana yum update opensslmemperbarui paket openssl yang memperbarui ca-bundle.crtfile sistem dan memperbaiki masalah bagi saya.

Hal yang sama mungkin berlaku untuk distribusi lain.

Wayne Walker
sumber
yum! Ini bekerja untuk saya untuk instalasi lama (4.1.2) Red Hat linux. Terima kasih!
Josh
13

Jika yang ingin Anda lakukan hanyalah menggunakan klien Cygwin git dengan github.com, ada cara yang lebih sederhana tanpa harus melalui kerumitan mengunduh, mengekstraksi, mengubah, memecah file cert. Lanjutkan sebagai berikut (Saya berasumsi Windows XP dengan Cygwin dan Firefox)

  1. Di Firefox, buka halaman github (apa saja)
  2. klik pada ikon github pada bilah alamat untuk menampilkan sertifikat
  3. Klik "informasi lebih lanjut" -> "tampilkan sertifikat" -> "perincian" dan pilih setiap simpul dalam hierarki yang dimulai dengan yang paling atas; untuk masing-masing klik pada "Ekspor" dan pilih format PEM:
    • GTECyberTrustGlobalRoot.pem
    • DigiCertHighAssuranceEVRootCA.pem
    • DigiCertHighAssuranceEVCA-1.pem
    • github.com.pem
  4. Simpan file di atas di suatu tempat di drive lokal Anda, ubah ekstensi menjadi .pem dan pindahkan ke / usr / ssl / certs di instalasi Cygwin Anda (Windows: c: \ cygwin \ ssl \ certs)
  5. (opsional) Jalankan c_reshash dari bash.

Itu dia.

Tentu saja ini hanya menginstal satu hierarki cert, yang Anda butuhkan untuk github. Tentu saja Anda dapat menggunakan metode ini dengan situs lain mana pun tanpa perlu menginstal 200 sertifikat situs yang tidak Anda percayai.

melarikan diri
sumber
8

Jika Anda menggunakan Mac OS X, Anda dapat menginstal ca-cert-bundle melalui homebrew:

$ brew install curl-ca-bundle
$ git config --system http.sslcainfo /usr/local/share/ca-bundle.crt

The rumus menginstal bundel cert untuk berbagi Anda melalui:

share.install 'ca-bundle.crt'

The sharemetode adalah hanya sebuah alias untuk /usr/local/share, dan ikal-ca-bundle disediakan oleh Mozilla. Apa yang Anda lihat dirujuk dalam banyak masalah. Semoga ini bisa membantu karena tidak terlalu mudah tentang bagaimana mendekati ini di Mac OS X. brew install curltidak akan banyak membantu Anda karena hanya tong dan tidak akan ditautkan (menjalankan which curlakan selalu menghasilkan /usr/bin/curl, yang merupakan default yang dikirimkan bersama dengan Anda OS). Posting ini mungkin juga bernilai .

Anda tentu saja harus menonaktifkan SSL sebelum Anda menginstal homebrewkarena itu repo git. Lakukan saja apa yang dikatakan curl ketika kesalahan keluar selama verifikasi SSL dan:

$ echo insecure >> ~/.curlrc

Setelah Anda homebrewmenginstal bersama dengan itu curl-ca-bundle, hapus .curlrcdan coba kloning repo di github. Pastikan tidak ada kesalahan dan Anda akan baik-baik saja.

CATATAN: Jika Anda terpaksa .curlrc, hapus dari sistem Anda saat Anda selesai pengujian. File ini dapat menyebabkan masalah besar, jadi gunakan untuk tujuan sementara dan dengan hati-hati. brew doctorakan mengeluh jika Anda lupa untuk membersihkannya dari sistem Anda).

CATATAN: Jika Anda memperbarui versi git Anda, Anda harus menjalankan kembali perintah ini karena pengaturan sistem Anda akan terhapus (mereka disimpan relatif terhadap biner git berdasarkan versi).

Jadi setelah berlari:

$ brew update
$ brew upgrade

Jika Anda mendapatkan versi baru dari git, maka jalankan kembali:

$ git config --system http.sslcainfo /usr/local/share/ca-bundle.crt

Dan Anda akan siap.

Terakhir jika Anda memiliki versi baru git, jalankan:

$ git config -l --system

seharusnya memberi Anda kesalahan di sepanjang baris

fatal: unable to read config file '/usr/local/Cellar/git/1.8.2.2/etc/gitconfig'

itulah tip Anda yang perlu Anda beri tahu git di mana bundel Mozilla berada.

MEMPERBARUI:

.curlrcmungkin atau mungkin bukan obat untuk masalah Anda. Bagaimanapun, dapatkan saja bundel Mozilla yang diinstal pada mesin Anda apakah Anda harus mengunduhnya secara manual atau tidak. Itu yang penting di sini. Setelah Anda mendapatkan bundel, Anda siap melakukannya. Cukup jalankan perintah git config dan arahkan git ke ca-bundle.

MEMPERBARUI

Saya baru-baru ini harus menambahkan:

export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crtke .zshenvfile dot saya karena saya menggunakan zsh. yang git configpilihan bekerja untuk kebanyakan kasus, tapi ketika memukul github atas SSL ( rvm get stablemisalnya), saya masih berlari ke dalam masalah sertifikat. @Maverick menunjukkan hal ini dalam komentarnya, tetapi untuk berjaga-jaga seandainya seseorang melewatkannya atau menganggap mereka tidak perlu mengekspor variabel lingkungan ini selain menjalankangit config --system.... perintah. Terima kasih dan berharap ini bisa membantu.

MEMPERBARUI

Sepertinya curl-ca-bundle baru - baru ini dihapus dari homebrew . Ada rekomendasi di sini .

Anda ingin memasukkan beberapa file ke:

$(brew --prefix)/etc/openssl/certs

A-Dubb
sumber
1
Anda juga dapat mencoba yang berikut ini: export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt
Maverick
Hai, Saya mengalami masalah serupa ( stackoverflow.com/questions/20939105/... ) dan masalah yang sama muncul ketika saya mencoba menginstal buatan sendiri. Apa yang bisa saya lakukan dalam kasus ini? Mengetik "git config --system http.sslcainfo /usr/local/share/ca-bundle.crt" di konsol saya mengembalikan "kesalahan: tidak dapat mengunci file konfigurasi /Applications/Xcode.app/Contents/Developer/usr/etc/ gitconfig: Tidak ada file atau direktori ". Terima kasih untuk bantuannya!
Mathieu
@Mathieu itu sangat aneh. Sepertinya sistem Anda menunjuk ke versi git relatif terhadap XCode. Apa output dari menjalankan 'yang git' dari terminal Anda?
A-Dubb
7

Anda dapat mencoba perintah ini di Terminal :

git config --global http.sslVerify false

reza_khalafi
sumber
5

Saya memperbaiki masalah ini menggunakan apt-cyg (penginstal hebat yang mirip dengan apt-get) untuk mengunduh ka-sertifikat dengan mudah (termasuk Git dan banyak lagi):

apt-cyg install ca-certificates

Catatan : apt-cyg harus diinstal terlebih dahulu. Anda dapat melakukan ini dari baris perintah Windows:

cd c:\cygwin
setup.exe -q -P wget,tar,qawk,bzip2,subversion,vim

Tutup Windows cmd, dan buka Cygwin Bash:

wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg
install apt-cyg /bin
sagunms
sumber
Ini tidak berhasil untuk saya - saya masih mendapatkan kesalahan yang sama.
holdenlee
4

pada pi rasberi aku

pi @ raspbmc: ~ $ git clone http: //github.com/andreafabrizi/Dropbox-Uploader .git Mengkloning ke 'Dropbox-Uploader' ... kesalahan: Masalah dengan sertifikat CA CA (jalur? Hak akses?) saat mengakses http: // github.com/andreafabrizi/Dropbox-Uploader.git/info/refs fatal: Permintaan HTTP gagal

jadi id a

sudo apt-get install ca-certificates

kemudian

git clone http://github.com/andreafabrizi/Dropbox-Uploader.git  

bekerja

fred
sumber
4

Jika Anda menggunakan OS berbasis debian, Anda bisa menjalankannya

apt-get install ca-sertifikat

Patrick
sumber
4

Saya mengalami masalah yang sama untuk Solaris Express 11. Saya butuh beberapa saat, tetapi saya berhasil menemukan di mana sertifikat perlu ditempatkan. Menurut /etc/openssl/openssl.cnf, jalur untuk sertifikat adalah / etc / openssl / certs. Saya menempatkan sertifikat yang dihasilkan menggunakan saran di atas dari Alexey.

Anda dapat memverifikasi bahwa semuanya berfungsi menggunakan openssl pada commandline:

openssl s_client -connect github.com:443
Martin Smith
sumber
3

Coba gunakan file .netrc, itu akan mengotentikasi lebih dari https. Buat panggilan file .netrcdi direktori home Anda dan letakkan ini di dalamnya:

machine github.com login myusername password mypass

Lihat posting ini untuk info lebih lanjut:

https://plus.google.com/u/0/104462765626035447305/posts/WbwD4zcm2fj

Travis Reeder
sumber
Ini adalah masalah validasi sertifikat, bukan masalah otentikasi - beberapa sistem operasi (termasuk yang dijalankan OP) tidak memiliki CA yang mengeluarkan sertifikat baru github yang termasuk dalam daftar stok.
Charles Duffy
3

Tingkatkan solusi RouMao dengan menonaktifkan sementara verifikasi GIT / curl ssl di Windows cmd:

set GIT_SSL_NO_VERIFY=true
git config --global http.proxy http://<your-proxy>:443

Hal yang baik tentang solusi ini adalah hanya berpengaruh pada jendela cmd saat ini.

Menyusun
sumber
3
Ini SANGAT BERBAHAYA! Inti dari verifikasi sertifikat SSL adalah untuk melindungi kode Anda dari gangguan ketika Anda mentransmisikannya melalui HTTPS! Menonaktifkan itu berarti bahwa orang jahat dapat memasukkan kerentanan dan hal-hal buruk lainnya ke dalam kode Anda saat Anda mendorong dan mengambilnya!
3

Sudahkah Anda memeriksa waktu Anda?

Saya benar-benar menolak untuk membuat operasi git saya tidak aman dan setelah mencoba semua yang disebutkan orang di sini, saya tersadar bahwa satu kemungkinan penyebab mengapa sertifikat gagal lulus verifikasi adalah bahwa tanggalnya salah (baik tanggal kedaluwarsa sertifikat, atau lokal jam ).

Anda dapat memeriksa ini dengan mudah dengan mengetikkan dateterminal. Dalam kasus saya (raspberry Pi baru), jam lokal diatur ke tahun 1970, jadi ntpdate -u 0.ubuntu.pool.ntp.orgsemuanya mudah diperbaiki. Untuk rPi, saya juga merekomendasikan agar Anda menempatkan skrip berikut dalam pekerjaan cron harian (katakanlah /etc/cron.daily/ntpdate):

#!/bin/sh
/usr/sbin/ntpdate -u 0.ubuntu.pool.ntp.org 1> /dev/null 2>&1
Deiu
sumber
3

Buat token akses dari Github dan simpan, karena tidak akan muncul lagi.

git -c http.sslVerify=false clone https://<username>:<token>@github.com/repo.git

atau,

git config --global http.sslVerify false
git clone https://github.com/repo.git
Naseer-shaik
sumber
2

Saya mengalami masalah yang sama untuk mengkonfigurasi Git pada platform pengembangan kolaboratif yang harus saya kelola.

Untuk mengatasinya:

  • Saya telah memperbarui rilis Curl yang diinstal di server. Unduh versi terakhir di situs web Unduh halaman curl dan ikuti proses instalasi. Proses instalasi curl

  • Dapatkan kembali sertifikat otoritas yang memberikan sertifikat untuk server.

  • Tambahkan sertifikat ini ke file CAcert yang digunakan oleh curl. Di server saya terletak di /etc/pki/tls/certs/ca-bundle.crt.

  • Konfigurasikan git untuk menggunakan file sertifikat ini dengan mengedit file .gitconfig dan mengatur jalur sslcainfo. sslcainfo= /etc/pki/tls/certs/ca-bundle.crt

  • Pada mesin klien Anda harus mendapatkan sertifikat dan mengkonfigurasi file .gitconfig juga.

Saya harap ini akan membantu beberapa dari Anda.

G. Pfeiffer
sumber
1

Saya mencoba semuanya, akhirnya saya mencari di file hosts dan ada entri acak di sana untuk github. Menghapus alias memperbaiki masalah

% systemroot% \ system32 \ drivers \ etc \ hosts

GenericEventHandler
sumber
1

Saya cukup menonaktifkan otentikasi sertifikat SSL dan menggunakan login kata sandi nama pengguna sederhana seperti yang ditunjukkan di bawah inimasukkan deskripsi gambar di sini

0x3bfc
sumber
0

Saya membutuhkan sertifikat hanya untuk Cygwin dan git jadi saya melakukan apa yang diposting oleh @esquifit. Namun, saya harus menjalankan langkah 5 secara manual, c_rehash tidak tersedia di sistem saya. Saya mengikuti panduan ini: Menginstal Sertifikat CA ke dalam kerangka kerja OpenSSL sebagai gantinya.

Sonata
sumber
0

Saya membutuhkan dua hal:

  1. buka pengaturan cygwin dan sertakan paket ' ca-sertifikat ' (di bawah Net) (seperti yang ditunjukkan di tempat lain).

  2. Beri tahu git di mana menemukan sertifikat yang dipasang:

    GIT_SSL_CAINFO = / usr / ssl / certs / ca-bundle.crt GIT_CURL_VERBOSE = 1 git ...

    (Opsi Verbose tidak diperlukan)

    Atau menyimpan opsi secara permanen:

    git config --global http.sslCAinfo /usr/ssl/certs/ca-bundle.crt

    git ...

pengguna2896631
sumber
-2

Saya memiliki masalah yang sama. Impor sertifikat atau perintah untuk membatalkan verifikasi ssl tidak berfungsi. Ternyata kata sandi itu kedaluwarsa untuk proxy jaringan. Ada entri konfigurasi proxy. dalam file .gitconfig yang ada di profil pengguna windows saya. Saya baru saja menghapus seluruh entri dan mulai berfungsi lagi.

getah
sumber
-2

Pada sistem Mac OSX 10.5, saya bisa membuatnya bekerja dengan metode sederhana. Pertama, jalankan prosedur github dan tes, yang bekerja baik untuk saya, menunjukkan bahwa sertifikat saya sebenarnya baik-baik saja. https://help.github.com/articles/generating-ssh-keys

ssh -T [email protected]

Kemudian saya akhirnya memperhatikan format url lain untuk remote. Saya mencoba yang lain, di atas dan mereka tidak berhasil. http://git-scm.com/book/ch2-5.html

[email protected]:MyGithubUsername/MyRepoName.git

"Git push myRemoteName" yang sederhana berhasil dengan baik!

AnneTheAgile
sumber
-2

Saya baru-baru ini (Jul 2014) memiliki masalah yang sama dan menemukan pada OS X (10.9.4) bahwa ada sertifikat "DigiCert High Assurance EV Root CA" telah kedaluwarsa (walaupun saya juga memiliki yang belum kedaluwarsa).

  1. Buka Akses Keychain
  2. cari Sertifikat untuk "DigiCert"
  3. Lihat menu> Tampilkan Sertifikat Kedaluwarsa

Saya menemukan dua sertifikat bernama "DigiCert High Assurance EV Root CA", satu berakhir November 2031 dan yang berakhir pada Juli 2014 (beberapa hari sebelumnya). Menghapus sertifikat yang kadaluwarsa menyelesaikan masalah untuk saya.

Semoga ini membantu.

craigb
sumber
-2

Bagi yang menggunakan Msys / MinGW GIT, tambahkan ini

  export GIT_SSL_CAINFO=/mingw32/ssl/certs/ca-bundle.crt 
John Chain
sumber