SSL sertifikası, güvenlik duvarının arkasında HTTPS üzerinden GitHub'a erişmeye çalışmayı reddetti


389

Bir güvenlik duvarının arkasında kaldım, bu yüzden GitHub veri havuzuma erişmek için HTTPS kullanmak zorundayım. Windows XP'de cygwin 1.7.7 kullanıyorum.

Uzaktan kumandayı ayarlamayı denedim https://username@github.com/username/ExcelANT.git, ancak bir parola soruyor, ancak girdikten sonra hiçbir şey yapmıyor. https://username:<password>github.com/username/ExcelANT.gitve boş depoyu sıfırdan klonlamak ama her defasında bana aynı hatayı veriyor

hata: SSL sertifikası sorunu, CA sertifikasının TAMAM olduğunu doğrulayın. Ayrıntılar:
hata: 14090086: SSL rutinleri: SSL3_GET_SERVER_CERTIFICATE: https://github.com/username/ExcelANT.git/info/refs adresine erişirken sertifika doğrulaması başarısız oldu

Açmak GIT_CURL_VERBOSE=1bana

* Github.com bağlantı noktası 443'e bağlanmak üzere () 443 (# 0)
* 207.97.227.239 çalışıyor ... * sertifika doğrulama konumlarını başarıyla ayarlandı:
* CAfile: none
CApath: / usr / ssl / certs
* SSL sertifika sorunu, şunu doğrulayın CA sertifikası TAMAM. Ayrıntılar:
hata: 14090086: SSL rutinleri: SSL3_GET_SERVER_CERTIFICATE: sertifika doğrulaması başarısız oldu
* Sonu temizlendi
* Bağlantı
kapatılıyor # 0 * github.com bağlantı noktası 443'e bağlanmak üzere ()
* (# 0) * Sertifika başarıyla ayarlandı konumları doğrulayın:
* CAfile: yok
CApath: / usr / ssl / certs
* SSL sertifikası sorunu, CA sertifikasının uygun olduğunu doğrulayın. Detaylar:
hata: 14090086: SSL rutinleri: SSL3_GET_SERVER_CERTIFICATE: sertifika doğrulama başarısız
* Sonu temizlendi
* Bağlantı kapatılıyor # 0
hatası: SSL sertifika sorunu, CA sertifikasının uygun olduğunu doğrulayın. Ayrıntılar:
hata: 14090086: SSL rutinleri: SSL3_GET_SERVER_CERTIFICATE: https://github.com/username/ExcelANT.git/info/refs adresine erişirken sertifika doğrulaması başarısız oldu

fatal: HTTP request failed

Güvenlik duvarım, cygwin'im veya neyle ilgili bir sorun mu var?

Git proxy'de HTTP proxy ayarlamamıştım, ancak NTLM kimlik doğrulaması gerektiren bir ISA sunucusu değil, temel değil, bu yüzden kimse git'i NTLM'yi kullanmaya nasıl zorlayacağını bilmiyorsa, korkuyorum.


Http.sslVerify false ayarını seçersem bağlantı güvenli olur mu? ve kullanmak için iyi bir yol mu? Arada pfsense güvenlik duvarı kullanıyoruz. şu anda, kullanıcı profilindeki .gitconfig dosyası boş.
Nullpointer

Yanıtlar:


57

Sertifika sorununu düzeltmek istiyorsanız bu cevabı atlamaktan çekinmeyin. Bu cevap, güvenlik duvarı üzerinden ssh tünellemesi ile ilgilidir, bu da IMHO, güvenlik duvarı / proxy şeyleri ile başa çıkmak için daha iyi bir çözümdür.

Http erişimini kullanmaktan daha iyi bir yol var ve bu, gshub tarafından ssh.github.com sunucusunun 443 numaralı bağlantı noktasında sunulan ssh hizmetini kullanmaktır.

Tirbuşon adı verilen bir araç kullanıyoruz. Bu, en sevdiğiniz paketleme aracını kullanarak hem CygWin (cygwin ana sayfasından kurulum yoluyla) hem de Linux için kullanılabilir. MacOSX için en azından macports'tan ve demlemeden elde edilebilir.

Komut satırı aşağıdaki gibidir:

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

Proxyhost ve proxyport, https proxy'sinin koordinatlarıdır. Targethost ve targetport, tünellenecek ana bilgisayarın konumudur. Kimlik doğrulama dosyası, proxy sunucusu kullanıcı adınızı / şifrenizi iki nokta üst üste işaretiyle ayıran 1 satırlı bir metin dosyasıdır

Örneğin:

abc:very_secret

Git iletişimi için "normal" ssh protokolünü kullanarak kurulum

Bunu ~/.ssh/configbu numaraya ekleyerek normal ssh bağlantıları için kullanılabilir.

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

şimdi ssh-ing'den gitproxy'ye çalıştığını test edebilirsiniz

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:~$

(Not: github'da daha önce hiç oturum açmadıysanız, ssh sunucu anahtarını bilinen hosts dosyasına eklemenizi isteyecektir. Paranoyaksanız, RSA parmak izini, github sitesinde gösterilen github sitesinde gösterilene doğrulamanız önerilir. anahtarınızı yükledi).

Özel bir hesabınızı profesyonel hesabınızdan ayırmak için başka bir anahtarla bir depoya erişmeniz gerektiğinde bu yöntemdeki küçük bir değişiklik söz konusudur.

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

zevk almak!

Bunu yıllardır hem Linux'ta, Mac'lerde hem de Windows'da kullanıyoruz.

İsterseniz bu blog gönderisinde daha fazla bilgi edinebilirsiniz


Bu çalışmayı bırakmaktan vazgeçtim, ama ona bir kez daha baktım ve çalışmasını sağladım. .ssh / config öğesini> olarak değiştirmek Host ssh.github.com >User oharab >Hostname ssh.github.com >Port 443 >PreferredAuthentications publickey >IdentityFile ~/.ssh/id_rsa ve git klonunu kullanarak klonlamak, hemen git@ssh.github.com:oharab/log4vba.gitçalışmaya başladı.
oharab

1
Ben sadece aşağıya iniyorum çünkü aşağıdaki cevap daha faydalıdır, ancak ne yazık ki stackoverflow her zaman sadece tek bir durum için bir cevap olsa bile, kabul edilen cevap her zaman üst sıraya koyar.
mjaggard

1
Her halükarda cevabı güncelledim, çünkü https proxy üzerinden SSL tünellemenin HTTPS sertifikalarıyla uğraşmaktan veya bunları devre dışı bırakmaktan ve hala daha az performans, kullanıcı dostu ve daha az güvenli bir çözümle sonuçlanmaktan daha iyi bir çözüm olduğunu buldum. Pek çok upvotes beni yanlış kanıtlıyor, ancak yine de bu konuda fikrime bağlıyım.
Peter Tillemans

523

Sorun, sisteminizde herhangi bir Sertifika Yetkilisi sertifikası bulunmamasıdır. Ve bu sertifikalar cygwin's setup.exe ile yüklenemez.

Güncelleme: Cygwin'e Net / ca-sertifika paketi yükleyin (teşekkürler dirkjot)

İki çözüm var:

  1. Aslında kök sertifikaları yükleyin. Curl çocuklar sizin için Mozilla sertifikalarını ayıkladı .

    cacert.pemaradığınız dosyadır. Bu dosya 250'den fazla CA sertifikası içerir (bu ppl sayısına nasıl güveneceğinizi bilmiyorum). Bu dosyayı indirmeniz, tek tek sertifikalara bölmeniz / usr / ssl / certs (CApath) dizinine koymanız ve dizine eklemeniz gerekir.

    İşte nasıl yapılacağı. Cygwin setup.exe ile curl ve openssl paketleri kurun:

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

    Önemli : Kullanabilmek c_rehashiçin de kurmanız gerekir openssl-perl.

  2. SSL sertifikası doğrulamasını yoksay.

    UYARI: SSL sertifikası doğrulamanın devre dışı bırakılmasının güvenlik etkileri vardır. SSL / HTTPS bağlantılarının doğruluğunu doğrulamadan, kötü niyetli bir saldırgan güvenilir bir uç noktayı (GitHub veya başka bir uzak Git ana bilgisayarı gibi) taklit edebilir ve Ortadaki Adam Saldırısına . Çözüm olarak kullanmadan önce güvenlik sorunlarını ve tehdit modelinizi tam olarak anladığınızdan emin olun .

    $ env GIT_SSL_NO_VERIFY=true git clone https://github...
    

9
Curl kurmanıza gerek yok, sadece wget kullanın: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
Bunun cygwin olduğunu biliyorum, ama herkes Centos kullanarak buraya gelirse, .pem'in gitmesi gereken / etc / pki / tls / certs.
Slandering Monica Cellio'yu durdurun

2
Benim için çalışmadı - ancak yolumda c_rehash yok. Kabuğumu yeniden başlatmayı denedim. Ayrıca mpdir -p / usr / ssl / certs. Cygwin kurulumumun farklı mı yoksa eksik bir şey mi olduğunu merak ediyorum? Ayrıca, GIT_SSL_NO_VERIFY = true ayarının ardından klonlama işleminin çalıştırılması şu hatayla sonuçlandı: fatal: https://code.google.com/.../info/refs not found: did you run git update-server-info on the server?Belki yeniden başlattıktan sonra çalışır?
Jeff Axelrod

7
Bu cevap yanlış. ca-certificatesEksik kök sertifikaları almak için cygwin paketini kurmanız yeterlidir . Bu cevap neden bu kadar çok artış gösterdi?
rurban

32
SSL sertifikası doğrulamasını kapatmayın. Bu, endüstri genelinde araçlarda ve uygulama kodunda çok sık görülür. Sizi orta atakta bir adama açar. SSL kullanacaksanız, doğru şekilde kullanın.
Tim

430

Not: SSL doğrulamasının devre dışı bırakılmasının güvenlik etkileri vardır . Bir ağ üzerinden veri aktarmak için Git'i kullandığınızda Ortadaki Adam saldırılarına izin verir. Bunu bir çözüm olarak kullanmadan önce güvenlik sonuçlarını tam olarak anladığınızdan emin olun. Ya da daha iyisi, kök sertifikaları yükleyin.

Bunun bir yolu SSL CERT doğrulamasını devre dışı bırakmaktır:

git config --global http.sslVerify false

Bu, CURL'nin HTTPS sertifikasını vermesini önleyecektir.

Yalnızca bir depo için:

git config http.sslVerify false

17
Genel ayarlarınızı (örneğin tüm depoları) düzenlemek istemiyorsanız, --global
Erin

57
bunun ne kadar tehlikeli olduğuna dair bir not ekleyebilir misiniz?
Chronial

26
bu korkunç bir fikir. sertifikaların doğrulanması için bir neden vardır. sertifikayı güvenilir olarak doğrulamazsanız, sertifika herkes tarafından oluşturulabilir ve orta saldırıdaki bir adama karşı duyarlı olabilirsiniz.
Mark Carey

24
SSL doğrulamasını kapatmayın!
Tim

14
"Yapmayın" insanlar için: Elbette bu en güvenli yaklaşım değildir. AMA, SSL'ye sahip olmamak çok daha iyi bir seçenek! Çünkü bazı insanlar sadece kendi özel basit git sunucularını çalıştırıyorlar. Elbette, herhangi bir gerçek güvenlik için NO GO ayarıdır. En güvenli olmayan şey, düz baytların ağ üzerinden gönderilmesidir.
Peter Stegnar

109

Git'in tüm sistemimin kullandığı dosyayı değiştirmeden güncellenmiş sertifika paketini kullanmasını istedim. Git'in ana dizinimdeki belirli bir dosyayı nasıl kullanacağını aşağıda görebilirsiniz:

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

Şimdi .gitconfigbunu akran doğrulaması için kullanmak üzere güncelleyin :

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

Not Mutlak bir yol kullanıyorum. Git burada yol genişletmesi yapmaz, bu nedenle ~çirkin bir çamur olmadan kullanamazsınız . Alternatif olarak, yapılandırma dosyasını atlayabilir ve yolu ortam değişkeni üzerinden ayarlayabilirsiniz GIT_SSL_CAINFO.

Bu sorunu gidermek için ayarlayın GIT_CURL_VERBOSE=1. Git'in kullandığı CA dosyasının yolu, çıktıda "CAfile:" ile başlayan satırlarda gösterilir.


12
Benim için bu en iyi cevap: unix üzerinde çalışıyor (aslında NetBSD), sistemde başka hiçbir şeyi değil, sadece git'i etkiler ve root / Yönetici erişimi gerektirmez. Teşekkürler!
Eric

1
Mükemmel, biri daha iyi yapabilir. Ben /etc/ssl/certs/ca-certificates.crtUbuntu 8.04 LTS benim eski bu dosya ile değiştirildi ve sihirli çalıştı!
Michael-O

1
@ NetBD'den bu cevabı bulduğum için bahsettiğiniz için teşekkürler. NetBSD biraz tuhaf. OpenSSL paketini kurdum, ancak bu bile size sertifikaları almıyor, sadece bir yer tutucu dizini.
atomiküller

+200 Daha harika, Ubuntu kutumda da çalıştı. Git'te sertifika kontrolünü devre dışı bırakmanıza gerek yok, sadece bu hızlı düzeltmeyi yapın.
Colin D Bennett

11
Mükemmel yanıt, ~ / .gitconfig dosyasını aşağıdaki komutla elle düzenlemeyi atlayabilirsiniz:git config --global http.sslCAinfo "$HOME/certs/cacert.pem"
Aron Ahmadia

41

Benim için bu çalışma (CentOS 5.6 RVM yükleme) almak için, ben aşağıdaki çalıştırmak zorunda olduğunu unutmayın:

export GIT_SSL_NO_VERIFY=true

ve bundan sonra, RVM yükleyicisini bash'a kıvırmak için standart kurulum prosedürü bir tedavi yaptı :)


13
git config ile aynı etki
Dyno Fu

20
Bu son derece TEHLİKELİ! SSL sertifikası doğrulamasının tüm amacı, kodunuzu HTTPS üzerinden aktarırken kurcalanmaya karşı korumaktır! Devre dışı bırakmak, kötü niyetli kişilerin, siz itip alırken kodunuza güvenlik açıkları ve diğer kötü şeyleri ekleyebileceği anlamına gelir!

Http.sslVerify false ayarını seçersem bağlantı güvenli olur mu? ve kullanmak için iyi bir yol mu? Arada pfsense güvenlik duvarı kullanıyoruz
Nullpointer

@ Bağlantı teknik olarak çalışır, evet, ama kesin olarak iyi bir fikir değil . Senin git kökeni ve yerel makine hem iç hem kurumunuzun kontrolü altında ise, bu olabilir fena ama user456814 yorumuna göre, doğrulama devre dışı bırakılması MITM kadar açılır.
Doktor J

40

Çok basit bir çözüm: https: // yerine git: // yazın

Https : //the.repository yerine git: //the.repository kullanın ve çalışacaktır.

TortoiseGit ile Windows'ta bu sorunu yaşadım ve bu çözüldü.


Sanırım bu işe yarıyor çünkü SSL doğrulamıyor git://. Yukarıdaki bu cevapta belirtildiği gibi , SSL doğrulamasını devre dışı bırakmak bir güvenlik riskidir.
danijar

5
@danijar bunun çalışmasının nedeni SSL bile kullanmıyor olması . git://Protokol kullandığı yerine bir SSL sertifikasının, kimlik doğrulama ve şifreleme için kamu ve özel anahtar çiftleri SSH SSH kullanır.

11
@Cupcake git://yok değil SSH kullanmak. Bkz . SSH Protokolü ve Git Protokolü .
nyuszika7h

@ nyuszika7h oh, haklısın. Ben sürekli kapanıyor git://ile karıştırılmamalıdır git@github.com:user/project.git, SCP-imsi sözdizimi olan .

31

En popüler cevap (Alexey Vishentsev tarafından) şöyle:

Sorun, sisteminizde herhangi bir Sertifika Yetkilisi sertifikası bulunmamasıdır. Ve bu sertifikalar cygwin's setup.exe ile yüklenemez.

Ancak, bu son iddia yanlıştır (şimdi ya da her zaman öyleydi, bilmiyorum).

Tek yapmanız gereken cygwin kurulumuna gitmek ve 'ca-certificate' paketini dahil etmektir (Net altındadır). Bu benim için hile yaptı.


1
cygwin git hatası gösterirken CAfile: /etc/ssl/ca-bundle.crtcygwin ca-certificate paketi yüklenir /usr/ssl/certs/ca-bundle.crt. Bu nedenle, ~/.gitconfigkonumu belirtmek için düzenlemek zorunda kaldı : [http]thensslCAinfo = /usr/ssl/certs/ca-bundle.crt
maxpolk

@maxpolk: Bir bağlantı kurardım ama etkisi aynı. Bu açıkça cygwin git'te bir hata, bir bilet almayı düşündünüz mü? sudo ln -s /usr/ssl/certs/ca-bundle.crt /etc/ssl/
dirkjot

Bugün 2013-5-23 itibariyle, cygwin git https üzerinde iyi çalışıyor: Ayrıca cygwin'leri kurmayı / yüklemeyi unutmayın ca-certificates.
bobbogo

Burada bir cevabın bulunabileceğini gösteren bu sorudan geldim. Ancak, ne bağlantılı cevap ne de bu cevap benim için işe yaramıyor; TortoiseSVN çıktı error: SSL certificate problem, verify that the CA cert is OK.
VEYA Mapper

Cygwin kurulum dosyalarını paket yöneticisinden tam olarak nereye yüklüyoruz? Ca sertifikalarının Git'in bin klasöründe olması gerekiyor mu?
221b

16

Orijinal soru Cygwin listeler biliyorum, ama İşte CentOS için çözüm:

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

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


Bu benim için harika çalıştı; OP'nin önerdiği gibi, muhtemelen orijinalin bir yedeğini almalısınız. Github sertifikalarını yenilediğinde, daha eski bir sistemdeyseniz böyle görünüyor.
Evan Donovan

CentOS 5'te bunu giderdim yum update openssl, bu da ca paketini de günceller.
raarts

bu seçeneği izleyecekseniz, kullanmadan önce dosyanın SHA-256 karmasını doğrulamanız gerekir. Sen alabilirsiniz geçerli dosya için sha256sum tarafından Kurduğunuz kıvrılma olduğu durumlar hariç (zaten güvenli kurulumu yapıldıktan farklı bir makinede bir tarayıcı gibi) ve daha sonra çıkışında karşı karşılaştırmak sha256sum /etc/pki/tls/certs/ca-bundle.crtemin hakkın var olması dosya.
kbolino

16

SSL doğrulamasını ayarlarken pencerelerde klonlamak için false olarak doğrulayın:

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

Eğer klon istiyorsanız olmadan global ayarları borfing.


14

CentOS 5.x'te, basit bir yum update opensslsistem ca-bundle.crtdosyasını güncelleyen ve benim için sorunu gideren openssl paketini güncelledi .

Aynı durum diğer dağıtımlar için de geçerli olabilir.


yum! Bu benim için Red Hat linux'un eski bir kurulumu (4.1.2) için çalıştı. Teşekkürler!
Josh

13

Tek yapmanız gereken Cygwin git istemcisini github.com ile kullanmaksa, cert dosyalarını indirme, çıkarma, dönüştürme, bölme zahmetinden geçmeden çok daha basit bir yol var. Aşağıdaki gibi ilerleyin (Cygwin ve Firefox ile Windows XP'yi varsayıyorum)

  1. Firefox'ta github sayfasına gidin (herhangi bir)
  2. sertifikayı görüntülemek için adres çubuğundaki github simgesine tıklayın
  3. "Daha fazla bilgi" -> "sertifika görüntüle" -> "ayrıntılar" seçeneklerini tıklayın ve hiyerarşideki en üstteki her düğümü seçin; her biri için "Dışa Aktar" ı tıklayın ve PEM biçimini seçin:
    • GTECyberTrustGlobalRoot.pem
    • DigiCertHighAssuranceEVRootCA.pem
    • DigiCertHighAssuranceEVCA-1.pem
    • github.com.pem
  4. Yukarıdaki dosyaları yerel sürücünüzde bir yere kaydedin, uzantıyı .pem olarak değiştirin ve Cygwin kurulumunuzda / usr / ssl / certs'e taşıyın (Windows: c: \ cygwin \ ssl \ certs)
  5. (isteğe bağlı) c_reshash'i bash'dan çalıştırın.

Bu kadar.

Tabii ki bu sadece bir sertifika hiyerarşisini, github için ihtiyacınız olanı yükler. Elbette bu yöntemi, güvenmediğiniz (mutlaka) 200 serts yüklemeye gerek kalmadan başka herhangi bir siteyle kullanabilirsiniz.


8

Mac OS X kullanıyorsanız, ca-cert-paketini şu şekilde yükleyebilirsiniz homebrew:

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

Formülü üzerinden paylaşımına sertifika demetini yükler:

share.install 'ca-bundle.crt'

shareYöntem için sadece bir takma /usr/local/shareve kıvrılma-ca-demeti tarafından sağlanmaktadırMozilla . Birçok konuda referans gördüğünüz şey budur. Mac OS X'te brew install curlbuna nasıl yaklaşılacağı konusunda çok basit olmadığı için umarız. Sadece fıçı olduğu ve bağlanmayacağı için size çok fazla ulaşmayacaktır (çalışma which curlher zaman çıktı olacaktır /usr/bin/curl, bu sizin İŞLETİM SİSTEMİ). Bu gönderinin değeri de olabilir .

homebrewGit deposu olduğu için yüklemeden önce SSL'yi elbette devre dışı bırakmanız gerekir . SSL doğrulaması sırasında hata oluştuğunda bu kıvrımın söylediği şeyi yapın ve:

$ echo insecure >> ~/.curlrc

Eğer aldıktan sonra homebrewbirlikte yüklü curl-ca-bundle, silme .curlrcve github üzerinde bir repo klonlama deneyin. Herhangi bir hata olmadığından emin olun ve hazır olacaksınız.

NOT: Başvuruyorsanız .curlrc, test ettiğiniz anda lütfen sisteminizden kaldırın. Bu dosya büyük sorunlara neden olabilir, bu nedenle geçici amaçlar için ve dikkatli kullanın. brew doctorsisteminizden temizlemeyi unutmanız durumunda şikayette bulunacaktır).

NOT: git sürümünüzü güncelleştirirseniz, sistem ayarlarınız silineceğinden bu komutu yeniden çalıştırmanız gerekir (sürüme göre git ikilisine göre depolanırlar).

Yani koştuktan sonra:

$ brew update
$ brew upgrade

Git'in yeni bir sürümünü alırsanız, sadece tekrar çalıştırın:

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

Ve her şey hazır olacak.

Son olarak git'in yeni bir sürümüne sahipseniz, şunu çalıştırın:

$ git config -l --system

çizgisinde size bir hata vermeli

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

Mozilla ca paketinin nerede olduğunu söylemeniz gereken bir ipucu.

GÜNCELLEME:

.curlrcsorununuzun çözümü olabilir veya olmayabilir. Her durumda, manuel olarak indirip indirmemeniz gerekip gerekmediği konusunda Mozilla ca-paketini makinenize kurmanız yeterlidir. Burada önemli olan bu. Ca paketini aldıktan sonra, gitmeye hazırsınız. Git config komutunu çalıştırın ve git'i ca-bundle'a yönlendirin.

GÜNCELLEME

Son zamanlarda eklemek zorunda kaldım:

export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crtkullandığımdan .zshenvberi nokta dosyama zsh. git configseçenek çoğu durum için çalıştı, ama SSL üzerinden GitHub vururken ( rvm get stableörneğin), hala sertifika sorunları koştu. @Maverick bunu yorumunda belirtti, ancak birisinin kaçırdığı veya varsaydığı takdirde, bu ortam değişkenini çalıştırmanın yanı sıra dışa aktarmaya gerek duymadığı varsayılırsagit config --system.... komutu . Teşekkürler ve umarım bu yardımcı olur.

GÜNCELLEME

Görünüşe bukle-ca-bohça edildi geçenlerde homebrew kaldırıldı . Burada bir tavsiye var .

Bazı dosyaları içine bırakmak isteyeceksiniz:

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


1
Ayrıca aşağıdakileri deneyebilirsiniz: export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt
Maverick

Merhaba, benzer bir sorun yaşıyorum ( stackoverflow.com/questions/20939105/… ) ve ev demlemek yüklemeye çalıştığımda aynı sorun ortaya çıkıyor. Bu durumda ne yapabilirim? Konsolumda "git config --system http.sslcainfo /usr/local/share/ca-bundle.crt" yazdığınızda "hatası: config dosyası kilitlenemedi /Applications/Xcode.app/Contents/Developer/usr/etc/ msgstr "gitconfig: Böyle bir dosya veya dizin yok". Yardımın için teşekkürler!
Mathieu

@Mathieu oldukça garip. Sisteminizin XCode'a göre git sürümünü işaret ettiği anlaşılıyor. Terminalinizden 'hangi git' çalıştırmanın çıktısı nedir?
A-Dubb

6

Bu komutu Terminal'de deneyebilirsiniz :

git config --global http.ssl yanlış doğrula


5

Ca sertifikalarını (Git ve çok daha fazlası dahil ) kolayca indirmek için apt-cyg ( apt-get'e benzer büyük bir yükleyici) kullanarak bu sorunu çözdüm :

apt-cyg install ca-certificates

Not : apt-cyg ilk olarak kurulmalıdır. Bunu Windows komut satırından yapabilirsiniz:

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

Windows cmd'yi kapatın ve Cygwin Bash'i açın:

wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg
install apt-cyg /bin

Bu benim için işe yaramadı - yine de aynı hatayı alıyorum.
holdenlee

4

bir rasbery pi üzerinde vardı

pi @ raspbmc: ~ $ git clone http: //github.com/andreafabrizi/Dropbox-Uploader .git 'Dropbox-Uploader' içine klonlama ... hatası: Erişim sırasında SSL CA sertifikası (yol? erişim hakları?) ile ilgili sorun http: // github.com/andreafabrizi/Dropbox-Uploader.git/info/refs ölümcül: HTTP isteği başarısız oldu

öyleyse a

sudo apt-get install ca-certificates

sonra

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

işlenmiş


4

Debian tabanlı işletim sistemi kullandıysanız,

apt-get install ca-sertifikaları


4

Solaris Express 11 için de aynı sorunu yaşıyorum. Biraz zamanımı aldı ama sertifikaların nereye yerleştirilmesi gerektiğini bulmayı başardım. /Etc/openssl/openssl.cnf dosyasına göre, sertifikaların yolu / etc / openssl / certs dizinidir. Alexey'in yukarıdaki tavsiyesi kullanılarak oluşturulan sertifikaları yerleştirdim.

Komut satırında openssl kullanarak işlerin çalıştığını doğrulayabilirsiniz:

openssl s_client -connect github.com:443

3

Bir .netrc dosyası kullanmayı deneyin, dosya https üzerinden doğrulanır. .netrcAna dizininizde bir dosya çağrısı oluşturun ve bunu içine koyun:

machine github.com login myusername password mypass

Daha fazla bilgi için bu gönderiye bakın:

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


Bu bir kimlik doğrulama sorunu değil, bir sertifika doğrulama sorunudur - bazı işletim sistemlerinde (OP'nin çalıştığı işletim sistemi de dahil) CA'nın github'un yeni sertifikasını stok listesine dahil etmedi.
Charles Duffy

3

Windows cmd'de GIT / curl ssl doğrulamasını geçici olarak devre dışı bırakarak RouMao'nun çözümünü iyileştirin:

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

Bu çözümle ilgili iyi olan şey, sadece geçerli cmd penceresinde etkili olması.


3
Bu son derece TEHLİKELİ! SSL sertifikası doğrulamasının tüm amacı, kodunuzu HTTPS üzerinden aktarırken kurcalanmaya karşı korumaktır! Devre dışı bırakmak, kötü niyetli kişilerin, siz itip alırken kodunuza güvenlik açıkları ve diğer kötü şeyleri ekleyebileceği anlamına gelir!

3

Zamanını kontrol ettin mi?

Git operasyonlarımı güvensiz yapmayı kesinlikle reddettim ve burada bahsettiğim her şeyi denedikten sonra, sertifikaların doğrulamayı geçememesinin olası bir nedeninin tarihlerin yanlış olması (sertifikanın son kullanma tarihi veya yerel) saat) .

dateBir terminal yazarak bunu kolayca kontrol edebilirsiniz . Benim durumumda (yeni bir ahududu Pi), yerel saat 1970'e ayarlandı, bu yüzden basit bir ntpdate -u 0.ubuntu.pool.ntp.orgşey düzeltildi. Bir rPi için, ben de aşağıdaki komut dosyasını günlük cron işine koymanızı öneririm /etc/cron.daily/ntpdate:

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

3

Github'dan erişim belirteci oluşturun ve tekrar görünmeyeceğinden kaydedin.

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

veya,

git config --global http.sslVerify false
git clone https://github.com/repo.git

2

Git'i yönetmek zorunda olduğum ortak bir geliştirme platformunda yapılandırmak için de aynı sorunla karşılaştım.

Çözmek için:

  • Sunucuda yüklü Curl sürümünü güncelledim. Web sitesi son sürümünü indirin kıvrılma İndirme sayfasına ve kurulum işlemleri uygulayın kıvrılma montajı işlemlerini

  • Sunucu için sertifikayı veren yetkilinin sertifikasını geri alın.

  • Bu sertifikayı curl tarafından kullanılan CAcert dosyasına ekleyin. Sunucumda bulunuyor /etc/pki/tls/certs/ca-bundle.crt.

  • Git'i, .gitconfig dosyasını düzenleyerek ve sslcainfo yolunu ayarlayarak bu sertifika dosyasını kullanacak şekilde yapılandırın. sslcainfo= /etc/pki/tls/certs/ca-bundle.crt

  • İstemci makinede sertifikayı almalı ve .gitconfig dosyasını da yapılandırmalısınız.

Umarım bu bazılarınıza yardımcı olur.


1

Her şeyi denedim, sonunda hosts dosyasına baktım ve github için rastgele bir giriş vardı. Takma adı kaldırmak sorunu çözdü

% Systemroot% \ system32 \ drivers \ etc \ hosts


1

SSL sertifikası kimlik doğrulamasını devre dışı bıraktım ve aşağıda gösterildiği gibi basit kullanıcı adı parola giriş bilgilerini kullandımresim açıklamasını buraya girin



0

İki şeye ihtiyacım vardı:

  1. cygwin kurulumuna gidin ve ' ca-certificate ' paketini (Net altındadır) (başka bir yerde belirtildiği gibi) ekleyin .

  2. Yüklü sertifikaları nerede bulacağınızı söyleyin:

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

    (Ayrıntılı seçenek gerekli değildir)

    Veya seçeneği kalıcı olarak saklamak:

    git config küresel http.sslCAinfo /usr/ssl/certs/ca-bundle.crt

    git ...


-2

Aynı sorunu yaşadım. Sertifika içe aktarma veya SSL doğrulamasını ayarlama komutu çalışmadı. Ağ proxy'si için süresi dolmuş bir parola olduğu ortaya çıktı. Proxy yapılandırması girişi oldu. Windows kullanıcı profilimde bulunan .gitconfig dosyasında. Tüm girişi kaldırdım ve tekrar çalışmaya başladı.


-2

Bir Mac OSX 10.5 sisteminde, bunu basit bir yöntemle çalıştırabildim. İlk olarak, benim için uygun olan github prosedürlerini ve testi çalıştırın, sertifikamın gerçekten iyi olduğunu gösteriyor. https://help.github.com/articles/generating-ssh-keys

ssh -T git@github.com

Sonra nihayet uzaktan kumandalar için başka bir url biçimi fark ettim. Yukarıdaki diğerlerini denedim ve işe yaramadılar. http://git-scm.com/book/ch2-5.html

git@github.com:MyGithubUsername/MyRepoName.git

Basit bir "git push myRemoteName" harika çalıştı!


-2

Son zamanlarda (Temmuz 2014) benzer bir sorun yaşadım ve OS X'te (10.9.4) bir "DigiCert Yüksek Güvence EV Kök CA" sertifikasının süresinin dolduğunu gördüm (yine de süresi dolmamış bir tane daha vardı).

  1. Açık Anahtarlık Erişimi
  2. "DigiCert" için Arama Sertifikaları
  3. Görünüm menüsü> Süresi Dolmuş Sertifikaları Göster

Biri Kasım 2031'de süresi dolmuş ve Temmuz 2014'te (birkaç gün önce) süresi dolan "DigiCert Yüksek Güvence EV Kökü CA" adlı iki sertifika buldum. Süresi dolmuş sertifikayı silmek sorunu benim için çözdü.

Bu yardımcı olur umarım.


-2

Msys / MinGW GIT kullananlar için bunu ekleyin

  export GIT_SSL_CAINFO=/mingw32/ssl/certs/ca-bundle.crt 
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.