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://username@github.com/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.


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


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 git@ssh.github.com: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...
    

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

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.


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 :)


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.


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 git@github.com: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.


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/


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.


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.


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.


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


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


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

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


4

Jika Anda menggunakan OS berbasis debian, Anda bisa menjalankannya

apt-get install ca-sertifikat


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

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


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.


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

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

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.


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


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



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 ...


-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.


-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 git@github.com

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

git@github.com:MyGithubUsername/MyRepoName.git

"Git push myRemoteName" yang sederhana berhasil dengan baik!


-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.


-2

Bagi yang menggunakan Msys / MinGW GIT, tambahkan ini

  export GIT_SSL_CAINFO=/mingw32/ssl/certs/ca-bundle.crt 
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.