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.git
dan 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=1
memberi 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.
Jawaban:
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:
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:
Instalasi untuk menggunakan protokol ssh "normal" untuk komunikasi git
Dengan menambahkan ini ke
~/.ssh/config
trik ini dapat digunakan untuk koneksi ssh normal.sekarang Anda dapat mengujinya bekerja dengan ssh-ing ke gitproxy
(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.
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
sumber
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.git
membuatnya dan berjalan dalam waktu singkat.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:
Sebenarnya menginstal sertifikat root. Curl guys diekstraksi untuk Anda sertifikat dari Mozilla .
cacert.pem
File 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:
Penting : Untuk menggunakan
c_rehash
Anda harus menginstalopenssl-perl
juga.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.
sumber
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"}'
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?ca-certificates
paket cygwin untuk mendapatkan sertifikat root yang hilang. Mengapa jawaban ini begitu banyak naik?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:
Ini akan mencegah CURL untuk memverifikasi sertifikasi HTTPS.
Hanya untuk satu repositori:
sumber
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:
Sekarang perbarui
.gitconfig
untuk menggunakan ini untuk verifikasi rekan: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.sumber
/etc/ssl/certs/ca-certificates.crt
di Ubuntu 8.04 LTS saya dengan file ini dan secara ajaib bekerja!git config --global http.sslCAinfo "$HOME/certs/cacert.pem"
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 :)
sumber
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.
sumber
git://
. Sebagaimana dinyatakan dalam jawaban di atas , menonaktifkan verifikasi ssl adalah risiko keamanan.git://
protokol menggunakan SSH, yang menggunakan SSH pasangan kunci publik dan swasta untuk otentikasi dan enkripsi, bukan sertifikat SSL.git://
tidak tidak menggunakan SSH. Lihat Protokol SSH dan Protokol Git .git://
bingung[email protected]:user/project.git
, yaitu sintaksis SCP-ish .Sebagai jawaban paling populer (oleh Alexey Vishentsev):
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.
sumber
CAfile: /etc/ssl/ca-bundle.crt
sedangkan cygwin ca-sertifikat menginstal paket/usr/ssl/certs/ca-bundle.crt
. Oleh karena itu, harus mengedit~/.gitconfig
untuk menentukan lokasi:[http]
lalusslCAinfo = /usr/ssl/certs/ca-bundle.crt
sudo ln -s /usr/ssl/certs/ca-bundle.crt /etc/ssl/
ca-certificates
.error: SSL certificate problem, verify that the CA cert is OK.
Saya tahu daftar pertanyaan asli Cygwin, tetapi di sini adalah solusi untuk CentOS:
Sumber: http://eric.lubow.org/2011/security/fixing-centos-root-certificate-authority-issues/
sumber
yum update openssl
, yang juga memperbarui ca-bundle.sha256sum /etc/pki/tls/certs/ca-bundle.crt
untuk memastikan Anda mendapat hak mengajukan.Untuk mengkloning di windows sambil mengatur SSL memverifikasi ke false:
Jika Anda ingin mengkloning tanpa membuat pengaturan global Anda.
sumber
Pada CentOS 5.x, sederhana
yum update openssl
memperbarui paket openssl yang memperbaruica-bundle.crt
file sistem dan memperbaiki masalah bagi saya.Hal yang sama mungkin berlaku untuk distribusi lain.
sumber
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)
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.
sumber
Jika Anda menggunakan Mac OS X, Anda dapat menginstal ca-cert-bundle melalui
homebrew
:The rumus menginstal bundel cert untuk berbagi Anda melalui:
The
share
metode adalah hanya sebuah alias untuk/usr/local/share
, dan ikal-ca-bundle disediakan olehMozilla
. 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 curl
tidak akan banyak membantu Anda karena hanya tong dan tidak akan ditautkan (menjalankanwhich curl
akan 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
homebrew
karena itu repo git. Lakukan saja apa yang dikatakan curl ketika kesalahan keluar selama verifikasi SSL dan:Setelah Anda
homebrew
menginstal bersama dengan itucurl-ca-bundle
, hapus.curlrc
dan 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 doctor
akan 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:
Jika Anda mendapatkan versi baru dari git, maka jalankan kembali:
Dan Anda akan siap.
Terakhir jika Anda memiliki versi baru git, jalankan:
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:
.curlrc
mungkin 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.crt
ke.zshenv
file dot saya karena saya menggunakanzsh
. yanggit config
pilihan bekerja untuk kebanyakan kasus, tapi ketika memukul github atas SSL (rvm get stable
misalnya), 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
sumber
export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt
Anda dapat mencoba perintah ini di Terminal :
sumber
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):
Catatan : apt-cyg harus diinstal terlebih dahulu. Anda dapat melakukan ini dari baris perintah Windows:
Tutup Windows cmd, dan buka Cygwin Bash:
sumber
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
kemudian
bekerja
sumber
Jika Anda menggunakan OS berbasis debian, Anda bisa menjalankannya
sumber
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:
sumber
Coba gunakan file .netrc, itu akan mengotentikasi lebih dari https. Buat panggilan file
.netrc
di direktori home Anda dan letakkan ini di dalamnya:Lihat posting ini untuk info lebih lanjut:
https://plus.google.com/u/0/104462765626035447305/posts/WbwD4zcm2fj
sumber
Tingkatkan solusi RouMao dengan menonaktifkan sementara verifikasi GIT / curl ssl di Windows cmd:
Hal yang baik tentang solusi ini adalah hanya berpengaruh pada jendela cmd saat ini.
sumber
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
date
terminal. Dalam kasus saya (raspberry Pi baru), jam lokal diatur ke tahun 1970, jadintpdate -u 0.ubuntu.pool.ntp.org
semuanya mudah diperbaiki. Untuk rPi, saya juga merekomendasikan agar Anda menempatkan skrip berikut dalam pekerjaan cron harian (katakanlah/etc/cron.daily/ntpdate
):sumber
Buat token akses dari Github dan simpan, karena tidak akan muncul lagi.
atau,
sumber
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.
sumber
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
sumber
Saya cukup menonaktifkan otentikasi sertifikat SSL dan menggunakan login kata sandi nama pengguna sederhana seperti yang ditunjukkan di bawah ini
sumber
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.
sumber
Saya membutuhkan dua hal:
buka pengaturan cygwin dan sertakan paket ' ca-sertifikat ' (di bawah Net) (seperti yang ditunjukkan di tempat lain).
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 ...
sumber
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.
sumber
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
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 push myRemoteName" yang sederhana berhasil dengan baik!
sumber
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).
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.
sumber
Bagi yang menggunakan Msys / MinGW GIT, tambahkan ini
sumber