ファイアウォールの背後にあるHTTPS経由でGitHubにアクセスしようとしてSSL証明書が拒否されました


389

ファイアウォールの背後で立ち往生しているため、HTTPを使用してGitHubリポジトリにアクセスする必要があります。Windows XPでcygwin 1.7.7を使用しています。

リモコンをhttps://username@github.com/username/ExcelANT.gitに設定しようとしましたが、パスワードを要求するプロンプトを押しましたが、一度入力すると何も起こりません。 https://username:<password>github.com/username/ExcelANT.git空のリポジトリを最初からクローンしますが、毎回同じエラーが発生します

エラー:SSL証明書の問題。CA証明書に問題がないことを確認してください。詳細:
エラー:14090086:SSLルーチン:SSL3_GET_SERVER_CERTIFICATE:証明書の確認がhttps://github.com/username/ExcelANT.git/info/refsへのアクセス中に失敗しました

オンにGIT_CURL_VERBOSE=1すると

* github.comポート443(#0)にconnect()
しようとしています* 207.97.227.239を試行しています... *証明書検証場所の設定に成功しました:
* CAfile:なし
CApath:/ usr / ssl / certs
* SSL証明書の問題、それを確認してくださいCA証明書はOKです。詳細:
エラー:14090086:SSLルーチン:SSL3_GET_SERVER_CERTIFICATE:証明書の検証に失敗しました
* 期限切れがクリアされました
*接続
を閉じています#0 * github.comポート443(#0)へのconnect()を実行しています
* 207.97.227.239を試行しています... *証明書の設定に成功しました場所の確認:
* CAfile:なし
CApath:/ usr / ssl / certs
* SSL証明書の問題。CA証明書に問題がないことを確認してください。詳細:
エラー:14090086:SSLルーチン:SSL3_GET_SERVER_CERTIFICATE:証明書の検証に失敗しました
* 期限切れがクリアされました
*接続を閉じています#0
エラー:SSL証明書の問題、CA証明書に問題がないことを確認してください 詳細:
エラー:14090086:SSLルーチン:SSL3_GET_SERVER_CERTIFICATE:証明書の確認がhttps://github.com/username/ExcelANT.git/info/refsへのアクセス中に失敗しました

fatal: HTTP request failed

これは私のファイアウォール、cygwinなどの問題ですか?

私はGit設定でHTTPプロキシを設定していませんでしたが、基本ではなくNTLM認証を必要とするISAサーバーであるため、gitにNTLMを使用する方法を誰かが知らない限り、私は困惑しています。


http.sslVerifyをfalseに設定すると、接続は安全になりますか?そしてそれは使うのに良い道ですか?その間にpfsenseファイアウォールを使用しています。現在、ユーザープロファイルの.gitconfigファイルは空白です。
Nullpointer 2015

回答:


57

証明書の問題を修正する場合は、この回答をスキップしてご遠慮なく。この回答は、ファイアウォールを介したsshのトンネリングを扱います。これは、ファイアウォール/プロキシのものを処理するためのより良いソリューションです。

httpアクセスを使用するよりも良い方法があり、それはssh.github.comサーバーのポート443でgithubによって提供されるsshサービスを使用することです。

コルクスクリューというツールを使用します。これは、CygWin(cygwinホームページからのセットアップにより)と、お気に入りのパッケージツールを使用するLinuxの両方で使用できます。MacOSXの場合、macportsから入手でき、少なくとも醸造されます。

コマンドラインは次のとおりです。

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

proxyhostおよびproxyportは、httpsプロキシの座標です。targethostとtargetportは、トンネル先のホストの場所です。authfileは、コロンで区切られたプロキシサーバーのユーザー名/パスワードを含む1行のテキストファイルです

例えば:

abc:very_secret

git通信に「通常の」sshプロトコルを使用するためのインストール

これをthisに追加することで、~/.ssh/configこのトリックは通常のSSH接続に使用できます。

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

これで、gitproxyにssh-ingすることで機能するかどうかをテストできます

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

(注:以前にgithubにログインしたことがない場合、sshはサーバーキーを既知のhostsファイルに追加するように求めます。偏執的である場合は、RSAフィンガープリントを、githubサイトに表示されているものに確認することをお勧めしますキーをアップロードしました)。

この方法のわずかなバリエーションは、別のキーでリポジトリにアクセスする必要がある場合です。たとえば、プライベートアカウントをプロフェッショナルアカウントから分離する場合などです。

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

楽しい!

Linux、Mac、Windowsの両方でこれを何年も使用しています。

必要に応じて、このブログ投稿で詳細読むことができます


私はこれを機能させることをあきらめましたが、もう一度見て、それを機能させました。.ssh / configを>に変更Host ssh.github.com >User oharab >Hostname ssh.github.com >Port 443 >PreferredAuthentications publickey >IdentityFile ~/.ssh/id_rsa し、git cloneを使用して複製git@ssh.github.com:oharab/log4vba.gitすると、すぐに起動して実行されます。
オハラブ

1
以下の回答の方が役立つため、私は反対票を投じているだけですが、残念ながら、単一の状況に対する回答だけであったとしても、stackoverflowは常に受け入れられた回答を最上位にします。
mjaggard 2012

1
いずれにしても、httpsプロキシを介したSSLトンネリングがHTTPS証明書をいじったり無効にしたりすることよりも優れたソリューションであり、結果としてパフォーマンスやユーザーフレンドリーで安全性の低いソリューションになるため、回答を更新しました。まあ、たくさんの賛成投票が私を間違っていることを証明していますが、私はとにかくこの問題について私の意見に固執します。
Peter Tillemans 2013年

523

問題は、システムにインストールされている認証局証明書がないことです。また、これらの証明書はcygwinのsetup.exeではインストールできません。

更新:cygwinにNet / ca-certificatesパッケージをインストール(thanks dirkjot)

2つの解決策があります。

  1. ルート証明書を実際にインストールします。Mozillaから証明書を抽出したCurlの人たち

    cacert.pemファイルはあなたが探しているものです。このファイルには、250を超えるCA証明書が含まれています(この数のpplを信頼する方法がわかりません)。このファイルをダウンロードし、個々の証明書に分割して、それらを/ usr / ssl / certs(自分のCApath)に入れ、インデックスを作成する必要があります。

    これを行う方法は次のとおりです。cygwin setup.exeを使用して、curlとopensslパッケージをインストールします。

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

    重要:を使用c_rehashするには、インストールopenssl-perlも必要です。

  2. SSL証明書の検証を無視します。

    警告:SSL証明書の検証を無効にすると、セキュリティに影響します。SSL / HTTPS接続の信頼性を検証しないと、悪意のある攻撃者が信頼されたエンドポイント(GitHubや他のリモートGitホストなど)になりすますことができ、中間者攻撃に対して脆弱になります。これをソリューションとして使用する前に、セキュリティの問題脅威モデルを完全に理解してください。

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

9
あなたはカール、ちょうど使用の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
私はこれがcygwinであることを知っていますが、Centosを使用している人がいる場合、.pemの場所は/ etc / pki / tls / certsです。
モニカチェリオの誹謗中傷を止める

2
うまくいきませんでした-ただし、パスにc_rehashがありません。シェルを再起動してみました。また、mkdir -p / usr / ssl / certsも実行する必要がありました。Cygwinのインストールが異なるか、何か不足しているのでしょうか。また、GIT_SSL_NO_VERIFY = trueを設定してからクローン操作を実行すると、次のエラーが発生しましたfatal: https://code.google.com/.../info/refs not found: did you run git update-server-info on the server?
Jeff Axelrod 2011

7
この答えは間違っています。ca-certificates不足しているルート証明書を取得するには、cygwin パッケージをインストールするだけです。なぜこの回答は非常に多くの賛成を得たのですか?
rurban

32
SSL証明書の検証をオフにしないでください。これは、業界全体のツールとアプリケーションコードで頻繁に発生します。それはあなたを真ん中の攻撃の男性に開きます。SSLを使用する場合は、適切に使用してください。
Tim

430

注:SSL検証を無効にすると、セキュリティに影響します。Gitを使用してネットワーク経由でデータを転送すると、Man in the Middle攻撃が可能になります。これをソリューションとして使用する前に、セキュリティへの影響を完全に理解してください。または、ルート証明書をインストールしてください。

1つの方法は、SSL CERT検証を無効にすることです。

git config --global http.sslVerify false

これにより、CURLがHTTPS証明書を検証できなくなります。

1つのリポジトリのみ:

git config http.sslVerify false

17
グローバル設定(例:すべてのリポジトリ)を編集したくない場合は、-globalを除外します
Erin

57
これがどれほど非常に危険であるかについてのメモを追加していただけませんか?
クロニアル2013

26
これはひどい考えです。証明書を検証する必要があるのには理由があります。証明書が信頼できるものであると確認しないと、証明書がだれによっても生成され、中間者攻撃を受けやすくなります。
Mark Carey 2013年

24
SSL検証をオフにしないでください。
Tim

14
「やってはいけない」という人にとっては、これが最も安全な方法ではないことは確かです。しかし、SSLをまったく使用しない方がはるかに良いオプションです!一部の人々は、プライベートな単純なgitサーバーだけを実行しているため、彼らにとっては問題ありません。確かに、実際のセキュリティについては、これはノーゴー設定です。最も安全でないのは、プレーンバイトをネットワーク経由で送信することです。
Peter Stegnar 2014年

109

私のシステム全体が使用しているものを置き換えることなく、Gitに更新された証明書バンドルを使用してほしかった。Gitでホームディレクトリ内の特定のファイルを使用する方法は次のとおりです。

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

.gitconfigこれをピア検証に使用するように更新します。

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

絶対パスを使用していることに注意してください。ここではGitはパスの拡張を行わないため~、醜いクラッジなしでは使用できません。または、設定ファイルをスキップして、環境変数を介してパスを設定することもできますGIT_SSL_CAINFO

これをトラブルシューティングするには、を設定しGIT_CURL_VERBOSE=1ます。Gitが使用しているCAファイルのパスは、出力の「CAfile:」で始まる行に表示されます。


12
私にとっては、これが最良の答えです。UNIX(実際にはNetBSD)で動作し、gitにのみ影響し、システムの他の部分には影響しません。また、root / Administratorアクセス​​を必要としません。ありがとう!
エリック

1
完璧です。/etc/ssl/certs/ca-certificates.crtUbuntu 8.04 LTSの古いファイルをこのファイルに置き換えましたが、魔法のように動作しました!
Michael-O

1
@Ericは、NetBSDについて言及していただきありがとうございます。NetBSDは少し奇妙です。OpenSSLパッケージをインストールしましたが、それでも証明書を取得できません。単なるプレースホルダーディレクトリです。
原子数

+200もっとすごい、Ubuntuボックスでも動作しました。gitで証明書チェックを無効にする必要はありません。このクイックフィックスを実行するだけです。
コリンDベネット

11
:優秀な答えは、次のコマンドを使用して、手で編集〜/ .gitconfigファイルをスキップすることができますgit config --global http.sslCAinfo "$HOME/certs/cacert.pem"
アロンAhmadia

41

これを機能させるには(CentOS 5.6にRVMをインストールする)、以下を実行する必要があったことに注意してください。

export GIT_SSL_NO_VERIFY=true

その後、RVMインストーラーをbashにカーリングするための標準のインストール手順はごちそうになりました:)


13
git configと同じ効果--global http.sslverify false
Dyno Fu

20
これは非常に危険です!SSL証明書の検証の要点は、コードをHTTPS経由で送信するときに改ざんされないようにすることです。これを無効にすると、悪意のある人々がコードをプッシュしてフェッチするときに、脆弱性やその他の厄介なものをコードに挿入する可能性があります。

http.sslVerifyをfalseに設定すると、接続は安全になりますか?そしてそれは使うのに良い道ですか?その間にpfsenseファイアウォールを使用しています
Nullpointer '22

@Ravi接続は技術的には機能しますが、確かに良い考えではありません。gitオリジンとローカルマシンの両方が内部にあり、組織の管理下にある場合、それは合格となる可能性がありますが、user456814のコメントによると、検証を無効にするとMITM攻撃を受ける可能性があります。
Doktor J

40

非常に簡単な解決策:https://をgit://に置き換えます

https://the.repositoryの代わりにgit://the.repositoryを使用してください。

私はWindowsでTortoiseGitを使用してこの問題を抱えていましたが、これで解決しました。


のsslを検証しないため、これは機能すると思いgit://ます。上記の回答で述べたように、ssl検証を無効にすることはセキュリティ上のリスクです。
danijar 2014

5
@danijarこれが機能する理由は、SSLをまったく使用しないためです。git://プロトコルではなく、SSL証明書の認証および暗号化のためにSSH公開鍵と秘密鍵のペアを使用してSSHを使用しています。

11
@Cupcake git://はSSHを使用しませSSHプロトコルおよびGitプロトコルを参照してください。
nyuszika7h 2014年

@ nyuszika7hああ、そうだね。SCP風の構文あるとgit://混同され続けますgit@github.com:user/project.git

31

(Alexey Vishentsevによる)最も人気のある答えはそれを持っています:

問題は、システムにインストールされている認証局証明書がないことです。また、これらの証明書はcygwinのsetup.exeではインストールできません。

ただし、その最後のアサーションは偽です(現在、または以前から、私は知りません)。

あなたがしなければならないのは、cygwinセットアップに行き、パッケージ 'ca-certificates'(それはネットの下にあります)を含めることです。これは私にとってはトリックでした。


1
cygwin gitエラーが表示されるのCAfile: /etc/ssl/ca-bundle.crtに対し、cygwin ca-certificatesパッケージはインストールされます/usr/ssl/certs/ca-bundle.crt。したがって、~/.gitconfig場所を指定するために編集する必要がありました。[http]次にsslCAinfo = /usr/ssl/certs/ca-bundle.crt
maxpolk

@maxpolk:リンクを張っていたはずですが、効果は同じです。これは明らかにcygwin gitのバグです。チケットを上げることを検討しましたか?sudo ln -s /usr/ssl/certs/ca-bundle.crt /etc/ssl/
dirkjot 2013年

今日の2013年5月23日の時点で、cygwinのgitはhttps:でも正常に機能していますca-certificates
bobbogo 2013年

この質問からここにたどり着きました。答えはここにあることがわかりました。ただし、リンクされた回答もこの回答も私にはうまくいきません。TortoiseSVNが出力し続けるerror: SSL certificate problem, verify that the CA cert is OK.
またはMapper 2013年

パッケージマネージャーからcygwinインストールファイルを正確にどこにインストールしますか?ca-certificatesはGitのbinフォルダー内にある必要がありますか?
221b 2015

16

元の質問にはCygwinがリストされていますが、CentOSのソリューションは次のとおりです。

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

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


これは私にとってはうまくいきました。ただし、OPが示唆しているように、おそらく最初に元のバックアップを作成する必要があります。古い証明書を持つシステムを使用している場合、Githubが証明書を更新すると、このようになるようです。
エヴァンDonovan

CentOS 5では、で修正しましたyum update openssl。これにより、caバンドルも更新されます。
raarts

このオプションを使用する場合は、使用する前にファイルのSHA-256ハッシュを確認する必要があります。あなたは得ることができ、現在のファイルのためのsha256sumをすることによって、あなたが設定しているカール以外の何らかの手段(すでにしっかりとセットアップされた別のマシン上のブラウザのように)、その後の出力に対してそれを比較するsha256sum /etc/pki/tls/certs/ca-bundle.crtあなたは権利を得たことファイル。
kbolino 2018年

16

SSL検証をfalseに設定しながらWindowsでクローンを作成するには:

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

グローバル設定を変更せずにクローン作成する場合。


14

CentOS 5.xでは、単純yum update opensslにopensslパッケージを更新してシステムca-bundle.crtファイルを更新し、問題を修正しました。

他のディストリビューションについても同様です。


ヤム!これは、Red Hat Linuxの古いインストール(4.1.2)ではうまくいきました。ありがとう!
Josh

13

github.comでCygwin gitクライアントを使用するだけの場合は、証明書ファイルをダウンロード、抽出、変換、分割する手間をかけずに、はるかに簡単な方法があります。次のように実行します(CygwinとFirefoxを搭載したWindows XPを想定しています)

  1. Firefoxで、githubページ(任意)に移動します。
  2. アドレスバーのgithubアイコンをクリックして、証明書を表示します
  3. [詳細情報]-> [証明書の表示]-> [詳細]をクリックして、階層の最上位ノードから順に各ノードを選択します。それぞれについて、[エクスポート]をクリックしてPEM形式を選択します。
    • GTECyber​​TrustGlobalRoot.pem
    • DigiCertHighAssuranceEVRootCA.pem
    • DigiCertHighAssuranceEVCA-1.pem
    • github.com.pem
  4. 上記のファイルをローカルドライブのどこかに保存し、拡張子を.pemに変更して、Cygwinインストールの/ usr / ssl / certsに移動します(Windows:c:\ cygwin \ ssl \ certs)。
  5. (オプション)bashからc_reshashを実行します。

それでおしまい。

もちろん、これはgithubに必要な1つの証明書階層のみをインストールします。もちろん、他のどのサイトでもこの方法を使用できますが、(必ずしも)信頼していないサイトの証明書を200個インストールする必要はありません。


8

Mac OS Xを使用している場合は、ca-cert-bundleをhomebrew次の方法でインストールできます。

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

式は、経由で共有に証明書のバンドルをインストールします。

share.install 'ca-bundle.crt'

このshareメソッドは単なるのエイリアス/usr/local/shareであり、curl-ca-bundleはによって提供されMozillaます。これは、多くの問題で参照されているものです。Mac OS Xでこれにアプローチする方法について簡単ではないので、これが役立つことを願っています。brew install curlケグのみであり、リンクされないため、多くのことは得られません(実行which curlすると常に出力されます/usr/bin/curl。これは、 OS)。この投稿は、いくつかの価値があるかもしれません

SSL homebrewはgitリポジトリなので、インストールする前にSSLを無効にする必要があります。SSL検証中にエラーが発生したときにcurlが言うことを実行してください。

$ echo insecure >> ~/.curlrc

homebrew一緒にインストールしたら、githubでリポジトリをcurl-ca-bundle削除.curlrcしてクローンを作成します。エラーがないことを確認してください。そうすれば問題ありません。

注意:場合は.curlrc、テストが終了したらすぐにシステムから削除してください。このファイルは重大な問題を引き起こす可能性があるため、一時的な目的で注意して使用してください。brew doctorシステムから削除するのを忘れた場合に文句を言うでしょう)。

注: gitのバージョンを更新する場合は、システム設定が消去されるため、このコマンドを再実行する必要があります(バージョンに基づいてgitバイナリに対して相対的に保存されます)。

したがって、実行後:

$ brew update
$ brew upgrade

gitの新しいバージョンを入手したら、再実行します。

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

そして、あなたはすべて設定されます。

最後に、gitの新しいバージョンがある場合は、次のコマンドを実行します。

$ git config -l --system

の線に沿ってエラーを与えるはずです

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

これは、Mozilla ca-bundleの場所をgitに伝えるためのヒントです。

更新:

.curlrc問題の解決策になる場合とそうでない場合があります。いずれの場合も、手動でダウンロードする必要があるかどうかにかかわらず、Mozilla ca-bundleをマシンにインストールしてください。それがここで重要なことです。ca-bundleを取得したら、準備は完了です。git configコマンドを実行して、gitにcaバンドルを指定するだけです。

更新

私は最近追加する必要がありました:

export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt.zshenv私が使用してzshいるので、私のドットファイルに。このgit configオプションはほとんどの場合に機能しましたが、SSL経由でgithubにアクセスした場合(rvm get stableたとえば)、まだ証明書の問題に遭遇しました。@マーベリックはコメントでこれを指摘しましたが、誰かがそれを逃したか、実行することに加えて必ずしもこの環境変数をエクスポートする必要がないと想定する場合に備えてgit config --system....コマンドの。感謝し、これが役に立てば幸いです。

更新

以下のように見えますカール-CA-バンドルされた最近の自作から削除しますここに推奨事項があります

いくつかのファイルを次の場所にドロップする必要があります。

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


1
あなたはまた、次のことを試すことができます: export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt
マーベリック

こんにちは、私は同様の問題(stackoverflow.com/questions/20939105/…)を抱えており、自家製のものをインストールしようとすると同じ問題が発生します。この場合、私は何ができますか?コンソールで「git config --system http.sslcainfo /usr/local/share/ca-bundle.crt」と入力すると、「エラー:構成ファイルをロックできませんでした/Applications/Xcode.app/Contents/Developer/usr/etc/ gitconfig:そのようなファイルやディレクトリはありません。」ご協力ありがとうございました!
Mathieu

@Mathieuそれはかなり奇妙です。システムがXCodeに関連するgitのバージョンを指しているようです。端末から「which git」を実行すると、どのような出力が得られますか?
Aダブ2014年

6

ターミナルでこのコマンドを試すことができます:

git config --global http.sslVerify false


5

apt-cyg(apt-getに似た優れたインストーラー)を使用してこの問題を修正し、ca-certificates(Gitなどを含む)を簡単にダウンロードしました。

apt-cyg install ca-certificates

注意:apt-cygを最初にインストールする必要があります。これは、Windowsコマンドラインから実行できます。

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

Windows cmdを閉じ、Cygwin Bashを開きます。

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

これは私にとってはうまくいきませんでした-それでも同じエラーが発生します。
holdenlee 2014年

4

私が持っていたラズベリーパイで

pi @ raspbmc:〜$ git clone http://github.com/andreafabrizi/Dropbox-Uploader .git Cloning into 'Dropbox-Uploader' ...エラー:アクセス中のSSL CA証明書(パス?アクセス権?)の問題http:// github.com/andreafabrizi/Dropbox-Uploader.git/info/refs fatal:HTTP request failed

そうid

sudo apt-get install ca-certificates

その後

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

働いた


4

debianベースのOSを使用している場合は、単純に実行できます

apt-get install ca-certificates


4

Solaris Express 11でも同じ問題が発生しました。しばらく時間がかかりましたが、証明書を配置する必要がある場所を見つけることができました。/etc/openssl/openssl.cnfによると、証明書のパスは/ etc / openssl / certsです。上記のAlexeyからのアドバイスを使用して生成した証明書を配置しました。

コマンドラインでopensslを使用して、動作していることを確認できます。

openssl s_client -connect github.com:443

3

.netrcファイルを使用してみてください。httpsで認証されます。.netrcホームディレクトリにファイル呼び出しを作成し、これを次の場所に配置します。

machine github.com login myusername password mypass

詳細については、この投稿を参照してください。

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


これは認証の問題であり、認証の問題ではありません-一部のオペレーティングシステム(OPが実行するものを含む)では、CAが発行するgithubの新しい証明書が在庫リストに含まれていません。
Charles Duffy、

3

Windows cmdでGIT / curl ssl検証を一時的に無効にして、RouMaoのソリューションを改善します。

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

このソリューションの良い点は、現在のcmdウィンドウでのみ有効になることです。


3
これは非常に危険です!SSL証明書の検証の要点は、コードをHTTPS経由で送信するときに改ざんされないようにすることです。これを無効にすると、悪意のある人々がコードをプッシュしてフェッチするときに、脆弱性やその他の厄介なものをコードに挿入する可能性があります。

3

時間を確認しましたか?

私はgit操作を安全にしないことを絶対に拒否し、ここで述べたすべてのことを試した後、証明書が検証に失敗する原因の1つとして、日付が間違っている(証明書の有効期限またはローカルクロックの。

date端末に入力することで簡単に確認できます。私の場合(新しいラズベリーPi)、ローカルクロックは1970に設定されていたため、単純にntpdate -u 0.ubuntu.pool.ntp.orgすべてを修正しました。rPiの場合、次のスクリプトを毎日のcronジョブ(たとえば/etc/cron.daily/ntpdate)に含めることをお勧めします。

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

3

再度表示されないように、Githubからアクセストークンを生成して保存します。

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

または、

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

2

私が管理しなければならない共同開発プラットフォームでGitを構成するために同じ問題が発生しました。

それを解決するには:

  • サーバーにインストールされているCurlのリリースを更新しました。curlの Webサイトダウンロードページで最新バージョンをダウンロードし、インストール手順に従いますcurlのインストール手順

  • サーバーの証明書を配信する機関の証明書を取得します。

  • この証明書をcurlが使用するCAcertファイルに追加します。私のサーバーではにあり/etc/pki/tls/certs/ca-bundle.crtます。

  • .gitconfigファイルを編集し、sslcainfoパスを設定して、この証明書ファイルを使用するようにgitを構成します。 sslcainfo= /etc/pki/tls/certs/ca-bundle.crt

  • クライアントマシンでは、証明書を取得し、.gitconfigファイルも構成する必要があります。

これがあなたの一部に役立つことを願っています。


1

私はすべてを試しましたが、最終的にはhostsファイルを調べたところ、githubのランダムなエントリがありました。エイリアスを削除すると問題が修正されました

%systemroot%\ system32 \ drivers \ etc \ hosts


1

以下のように、SSL証明書の認証を無効にし、単純なユーザー名とパスワードのログインを使用しました。ここに画像の説明を入力してください



0

私は2つのものが必要でした:

  1. cygwin setupに移動し、パッケージ ' ca-certificates '(Netの下にあります)を含めます(他の場所に示されています)。

  2. インストールされた証明書の場所をgitに伝えます。

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

    (詳細オプションは必要ありません)

    または、オプションを永続的に保存します。

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

    ギット ...


-2

同じ問題がありました。証明書のインポートまたはSSL検証の設定を解除するコマンドが機能しませんでした。ネットワークプロキシの有効期限が切れたパスワードであることが判明しました。プロキシ設定のエントリがありました。Windowsユーザープロファイルにある.gitconfigファイル内。エントリ全体を削除すると、再び機能し始めました。


-2

Mac OSX 10.5システムでは、これを簡単な方法で機能させることができました。まず、githubの手順とテストを実行します。これで問題なく動作し、証明書が実際に問題ないことを示しています。 https://help.github.com/articles/generating-ssh-keys

ssh -T git@github.com

その後、リモート用のさらに別のURL形式にようやく気付きました。上記の他のものを試しましたが、うまくいきませんでした。 http://git-scm.com/book/ch2-5.html

git@github.com:MyGithubUsername/MyRepoName.git

単純な「git push myRemoteName」はうまくいきました!


-2

最近(2014年7月)に同様の問題が発生し、OS X(10.9.4)で、「DigiCert High Assurance EV Root CA」証明書が期限切れになっていることがわかりました(ただし、期限切れになっていない証明書もありました)。

  1. キーチェーンアクセスを開く
  2. 「DigiCert」の証明書を検索
  3. [表示]メニュー> [期限切れの証明書を表示]

「DigiCert High Assurance EV Root CA」という名前の証明書が2つ見つかりました。1つは2031年11月に有効期限が切れ、もう1つは2014年7月(数日前)に期限が切れます。期限切れの証明書を削除すると、問題が解決しました。

お役に立てれば。


-2

Msys / MinGW GITを使用する場合は、これを追加します

  export GIT_SSL_CAINFO=/mingw32/ssl/certs/ca-bundle.crt 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.