私はファイアウォールの後ろに立ち往生しているので、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サーバーであり、基本的なものではありません。
証明書の問題を解決したい場合は、この回答をスキップしてください。この回答は、ファイアウォールを介したトンネリングの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の両方で使ってきました。
あなたが望むなら このブログ記事でそれについてもっと読む
問題は、システムに認証局証明書がインストールされていないことです。そして、これらの証明書はcygwinのsetup.exeでインストールできません。
更新: cygwinにNet/ca-certificatesパッケージをインストール (dirkjotに感謝)
2つの解決策があります。
実際にルート証明書をインストールします。 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
もインストールする必要があります。
SSL証明書の検証を無視します。
警告:SSL証明書の検証を無効にすると、セキュリティに影響します。SSL/HTTPS接続の信頼性の検証なし、悪意のある攻撃者は信頼できるエンドポイント(GitHubまたは他のリモートGitホストなど)になりすますことができ、あなたは 中間者攻撃 に対して脆弱になります。 これを解決策として使用する前に、セキュリティ問題および脅威モデルを完全に理解してください。
$ env GIT_SSL_NO_VERIFY=true git clone https://github...
注: SSL検証を無効にするとセキュリティに影響があります 。 Gitを使用してネットワーク経由でデータを転送すると、Man in the Middle攻撃が可能になります。これを解決策として使用する前に、セキュリティへの影響を十分に理解してください。もっと良いことには、ルート証明書をインストールしてください。
1つの方法はSSL CERT検証を無効にすることです。
git config --global http.sslVerify false
これはCURLがHTTPS認証を検証することを防ぎます。
1つのリポジトリのみ
git config http.sslVerify false
システム全体で使われているものを置き換えることなく、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:"で始まる行に表示されます。
これを機能させるには(CentOS 5.6へのRVMインストール)、次のコマンドを実行する必要がありました。
export GIT_SSL_NO_VERIFY=true
それ以降は、RVMインストーラをbashに変換するための標準的なインストール手順が役に立ちました:)
非常に簡単な解決策: https://をgit:// に置き換えます。
https://the.repository の代わりにgit://the.repositoryを使用すれば動作します。
私はWindows上でTortoiseGitを使ってこの問題を抱えていましたが、これで解決しました。
最も人気のある答えとして(Alexey Vishentsevが)それを持っています:
問題は、システムに認証局の証明書がインストールされていないことです。そしてこれらの証明書はcygwinのsetup.exeと一緒にインストールすることはできません。
しかし、その最後の主張は誤っています(現在、または常にそうであったことを私は知りません)。
あなたがしなければならないのはcygwinセットアップに行き、そしてパッケージ 'ca-certificates'を含めることです(それはネットの下にあります)。これは私にとってトリックでした。
私はオリジナルの質問リスト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/
CentOS 5.xでは、単純なyum update openssl
がopensslパッケージを更新し、システムのca-bundle.crt
ファイルを更新して問題を解決しました。
他のディストリビューションについても同じことが言えます。
SSL検証をfalseに設定している間にウィンドウ上でクローンを作成するには:
git -c http.sslVerify=false clone http://example.com/e.git
あなたのグローバルな設定を使ってwithoutを複製したい場合。
Github.comでCygwin gitクライアントを使用するだけでよい場合は、証明書ファイルをダウンロード、抽出、変換、分割する手間を省くことなくはるかに簡単な方法があります。以下のように進めてください(私はCygwinとFirefoxでWindows XPを想定しています)。
それでおしまい。
もちろん、これは1つの証明書階層(githubに必要なもの)をインストールするだけです。もちろん、あなたが(必ずしも)信頼していない200の証明書をインストールする必要なしに、他のどのサイトでもこの方法を使うことができます。
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-bundle はMozilla
によって提供されます。それはあなたが多くの問題で言及されているのを見ます。 brew install curl
は kegのみでリンクされません (which curl
を実行すると常に/usr/bin/curl
を出力します)のようにあなたを得ることはあまりないでしょう。これはあなたのOSに同梱されているデフォルトです。 この投稿も何らかの価値があるかもしれません 。
homebrew
はgitリポジトリなので、インストールする前にSSLを無効にする必要があります。 SSL検証中にエラーが発生したときにcurlが言うことをするだけです。
$ echo insecure >> ~/.curlrc
homebrew
がcurl-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
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
私はSolaris Express 11についても同じ問題を抱えていましたが、しばらく時間がかかりましたが、証明書を配置する必要がある場所を見つけることができました。 /etc/openssl/openssl.cnfによると、証明書のパスは/ etc/openssl/certsです。 Alexeyからの上記のアドバイスを使用して生成された証明書を配置しました。
コマンドラインでopensslを使用して動作していることを確認できます。
openssl s_client -connect github.com:443
ラズベリーパイで私は持っていた
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
働いた
あなたがDebianベースのOSを使っていたのなら、あなたは単に実行することができます
ca-certificatesをインストールする
.netrcファイルを使用してみてください、それはhttps経由で認証されます。ホームディレクトリに.netrc
というファイル呼び出しを作成し、その中に次のように配置します。
machine github.com login myusername password mypass
詳細についてはこの記事を参照してください。
https://plus.google.com/u/0/104462765626035447305/posts/WbwD4zcm2fj
時間を確認しましたか?
私は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
Windows cmdでGIT/curl ssl検証を一時的に無効にすることでRouMaoのソリューションを改善します。
set GIT_SSL_NO_VERIFY=true
git config --global http.proxy http://<your-proxy>:443
このソリューションの良いところは、それが現在のcmdウィンドウでのみ有効になるということです。
私が管理しなければならない共同開発プラットフォーム上で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ファイルも設定する必要があります。
これがあなたの何人かに役立つことを願っています。
私はすべてを試してみましたが、最終的にはhostsファイルを調べたところ、そこにランダムなエントリがgithubにありました。エイリアスを削除すると問題が解決しました
%systemroot%\ system32\drivers\etc\hosts
私は二つのことが必要でした。
cygwin setup に行き、パッケージ ' ca-certificates '(Netの下にあります)を含めてください(他のところに示されているとおり)。
インストールされている証明書の場所を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 ...
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
Cygwinとgitだけに証明書が必要だったので、@ esquifitが投稿したものを使いました。しかし、私は手動でステップ5を実行しなければなりませんでした、c_rehashは私のシステムで利用できませんでした。私はこのガイドに従った: OpenSSLフレームワークへのCA証明書のインストール 代わりに。
Terminalでこのコマンドを試すことができます:
git config --global http.sslVerify false