web-dev-qa-db-ja.com

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

私はファイアウォールの後ろに立ち往生しているので、GitHubリポジトリにアクセスするにはHTTPSを使わなければなりません。私はWindows XP上でcygwin 1.7.7を使っています。

リモコンをhttps://[email protected]/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)
* 207.97.227.239 ... *を試みると*証明書検証場所が正常に設定されました。
* CAファイル:なし
CAパス:/ usr/ssl/certs
* SSL証明書の問題、CA証明書が問題ないことを確認してください。詳細:
エラー:14090086:SSLルーチン:SSL3_GET_SERVER_CERTIFICATE:証明書の検証に失敗しました
*有効期限が切れました
*コネクション#0を閉じる
*()をgithub.comのポート443に接続する(#0)
* 207.97.227.239 ... *を試みると*証明書検証場所が正常に設定されました。
* CAファイル:なし
CAパス:/ 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サーバーであり、基本的なものではありません。

370
oharab

証明書の問題を解決したい場合は、この回答をスキップしてください。この回答は、ファイアウォールを介したトンネリングのsshを扱います。これは、ファイアウォールやプロキシの問題に対処するためのより優れたソリューションです。

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

私達はコルク抜きという道具を使います。これはCygWin(cygwinホームページからのセットアップを通じて)とあなたのお気に入りのパッケージングツールを使ったLinuxの両方で利用可能です。 MacOSXのためにそれはmacportsから利用可能で少なくとも醸造します。

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

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

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

例えば:

abc:very_secret

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

これを~/.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接続することで動作するかテストできます

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の両方で使ってきました。

あなたが望むなら このブログ記事でそれについてもっと読む

55
Peter Tillemans

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

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

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

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

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

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

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

git config --global http.sslVerify false

これはCURLがHTTPS認証を検証することを防ぎます。

1つのリポジトリのみ

git config http.sslVerify false
417
Yi Zhao

システム全体で使われているものを置き換えることなく、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:"で始まる行に表示されます。

108
kenchilada

これを機能させるには(CentOS 5.6へのRVMインストール)、次のコマンドを実行する必要がありました。

export GIT_SSL_NO_VERIFY=true

それ以降は、RVMインストーラをbashに変換するための標準的なインストール手順が役に立ちました:)

41
seanp2k

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

https://the.repository の代わりにgit://the.repositoryを使用すれば動作します。

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

39
klodoma

最も人気のある答えとして(Alexey Vishentsevが)それを持っています:

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

しかし、その最後の主張は誤っています(現在、または常にそうであったことを私は知りません)。

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

31
dirkjot

私はオリジナルの質問リスト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/

16

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

他のディストリビューションについても同じことが言えます。

14
Wayne Walker

SSL検証をfalseに設定している間にウィンドウ上でクローンを作成するには:

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

あなたのグローバルな設定を使ってwithoutを複製したい場合。

14
FlavorScape

Github.comでCygwin gitクライアントを使用するだけでよい場合は、証明書ファイルをダウンロード、抽出、変換、分割する手間を省くことなくはるかに簡単な方法があります。以下のように進めてください(私はCygwinとFirefoxでWindows XPを想定しています)。

  1. Firefoxでは、githubページに移動します(any)
  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を実行します。

それでおしまい。

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

13
esquifit

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

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

formula は、次のようにしてcertバンドルをあなたの共有にインストールします。

share.install 'ca-bundle.crt'

shareメソッドは/usr/local/shareの単なる別名であり、 curl-ca-bundleMozillaによって提供されます。それはあなたが多くの問題で言及されているのを見ます。 brew install curlkegのみでリンクされませんwhich curlを実行すると常に/usr/bin/curlを出力します)のようにあなたを得ることはあまりないでしょう。これはあなたのOSに同梱されているデフォルトです。 この投稿も何らかの価値があるかもしれません

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

$ echo insecure >> ~/.curlrc

homebrewcurl-ca-bundleと一緒にインストールされたら、.curlrcを削除し、githubでレポジトリのクローンを作成してみてください。間違いがないことを確認してください。

注: .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バンドルに向けてください。

_ update _

私は最近追加しなければならなかった:

zshを使用しているので、export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crtを私の.zshenvドットファイルに変換します。ほとんどの場合はgit configオプションが機能しましたが、SSLを介してgithubにアクセスしたとき(たとえばrvm get stable)、証明書の問題が発生しました。 @Maverickは彼のコメントでこれを指摘しました、しかし誰かがそれを見逃したか、彼らがgit config --system....コマンドを実行することに加えて必ずしもこの環境変数をエクスポートする必要がないと仮定した場合。ありがとう、そしてこれが役に立つことを願っています。

_ update _

curl-ca-bundle最近、自作から削除された でした。 ここにお勧め があります。

いくつかのファイルをにドロップしたいでしょう。

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

8
A-Dubb

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
5
sagunms

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

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

openssl s_client -connect github.com:443
4
Martin Smith

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

pi @ raspbmc:〜$ gitクローンhttp://github.com/andreafabrizi/Dropbox-Uploader .git 'Dropbox-Uploader'にクローンしています...エラー:SSL CA証明書(パス?アクセス権?)にアクセス中の問題http:// github.com/andreafabrizi/Dropbox-Uploader.git/info/refs fatal:HTTPリクエストが失敗しました

そうID

Sudo apt-get install ca-certificates

それから

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

働いた

4
fred

あなたがDebianベースのOSを使っていたのなら、あなたは単に実行することができます

ca-certificatesをインストールする

4
Patrick

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

machine github.com login myusername password mypass

詳細についてはこの記事を参照してください。

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

3
Travis Reeder

時間を確認しましたか?

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

これは、ターミナルでdateと入力することで簡単に確認できます。私の場合(新しいRaspberry 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
Deiu

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

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

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

3
Marshal

私が管理しなければならない共同開発プラットフォーム上でGitを設定するのと同じ問題に遭遇しました。

それを解決するために:

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

  • サーバーに証明書を配布する機関の証明書を取り戻します。

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

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

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

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

2
G. Pfeiffer

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

%systemroot%\ system32\drivers\etc\hosts

1

私は単にSSL証明書認証を無効にし、以下に示すように単純なユーザー名とパスワードのログインを使用しました enter image description here

1
aabdulwahed

私は二つのことが必要でした。

  1. cygwin setup に行き、パッケージ ' ca-certificates '(Netの下にあります)を含めてください(他のところに示されているとおり)。

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

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

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

    またはオプションを恒久的に保存する:

    git config - グローバルhttp.sslCAinfo /usr/ssl/certs/ca-bundle.crt

    git ...

0
user2896631

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
0
Naseer-shaik

Cygwinとgitだけに証明書が必要だったので、@ esquifitが投稿したものを使いました。しかし、私は手動でステップ5を実行しなければなりませんでした、c_rehashは私のシステムで利用できませんでした。私はこのガイドに従った: OpenSSLフレームワークへのCA証明書のインストール 代わりに。

0
Sonata

Terminalでこのコマンドを試すことができます:

git config --global http.sslVerify false

0
reza_khalafi