[解決済み】ファイアウォール越しにHTTPSでGitHubにアクセスしようとすると、SSL証明書が拒否される。
質問
ファイアウォールに囲まれているため、GitHub のリポジトリにアクセスするには HTTPS を使用する必要があります。Windows XPでcygwin 1.7.7を使用しています。
リモートを
https://[email protected]/username/ExcelANT.git
しかし、パスワードの入力を求めるプロンプトが表示され、入力しても何もしてくれません。
https://username:<password>github.com/username/ExcelANT.git
というメッセージが表示され、ゼロから空のレポをクローンしても、毎回同じエラーになります。
のエラーが発生しました。SSL 証明書の問題です。CA 証明書が問題ないことを確認してください。詳細はこちら
error:14090086:SSLルーチン:SSL3_GET_SERVER_CERTIFICATE:アクセス中に証明書の検証に失敗しました。 https://github.com/username/ExcelANT.git/info/refs
オンにする
GIT_CURL_VERBOSE=1
を得ることができます。
* github.com ポート 443 に connect() しようとしています (#0)
* 207.97.227.239を試しています... * 証明書の検証場所の設定に成功しました。
* CAfile: なし
CApath: /usr/ssl/certs
* SSL証明書の問題で、CA証明書が問題ないことを確認します。詳細はこちら
error:14090086:SSLルーチン:SSL3_GET_SERVER_CERTIFICATE:証明書の検証は失敗しました。
* 有効期限切れ
* コネクション#0をクローズする
* github.com ポート 443 に connect() するところです (#0)
* 207.97.227.239を試しています... * 証明書の検証場所の設定に成功しました。
* CAfile: なし
CApath: /usr/ssl/certs
* SSL証明書の問題で、CA証明書が問題ないことを確認します。詳細はこちら
error:14090086:SSLルーチン:SSL3_GET_SERVER_CERTIFICATE:証明書の検証は失敗しました。
* 有効期限切れ
* コネクション#0をクローズする
のエラーが発生しました。SSL証明書に問題があります、CA証明書が問題ないことを確認してください。詳細はこちら
error:14090086:SSLルーチン:SSL3_GET_SERVER_CERTIFICATE:アクセス中に証明書の検証に失敗しました。 https://github.com/username/ExcelANT.git/info/refs
fatal: HTTP request failed
ファイアウォールやCygwinの問題なのか、それとも何なのか?
Gitの設定にHTTPプロキシを設定していなかったのですが、ISAサーバーでBasic認証ではなくNTLM認証が必要でした。
解決方法は?
証明書の問題を解決したいのであれば、この回答は読み飛ばしていただいて結構です。この回答は、ファイアウォールを通した ssh のトンネリングを扱っています。これは、ファイアウォールやプロキシを扱うより良い解決方法だと思います。
httpアクセスよりも良い方法があります。それは、githubが提供しているsshサービスをssh.github.comサーバーの443番ポートで使用することです。
corkscrewというツールを使っています。これは、CygWin (cygwinのホームページからセットアップ) と Linux の両方で、お好みのパッケージングツールを使って利用することができます。MacOSXでは、少なくともmacportsとbrewから入手可能です。
コマンドラインは以下の通りです。
$ corkscrew <proxyhost> <proxyport> <targethost> <targetport> <authfile>
proxyhostとproxyportは、httpsのプロキシの座標です。targethostと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はknown hostsファイルにサーバの鍵を追加するように要求してきます。もしあなたが偏執狂なら、鍵をアップロードしたgithubサイトに表示されているRSAフィンガープリントを確認することをお勧めします)。
この方法を少し変形させたのが、別の鍵でリポジトリにアクセスする必要がある場合です。例えば、プライベートアカウントとプロフェッショナルアカウントを分離する場合です。
#
# 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の両方でこれを使用しています。
もし、あなたが望むなら 詳しくはこちらのブログ記事をご覧ください。
関連
-
[解決済み】Git, fatal: リモートエンドが予期せずハングアップしました。
-
git push reports an error ! [リモート拒否] master -> master (受信前のフックが拒否されました)
-
git revert 複数コミット
-
[解決済み] Git - node_modules フォルダをどこでも無視するようにしました。
-
[解決済み] git stashを元に戻す
-
[解決済み] ブラウンアウトの一環として、パスワード認証が一時的に無効になっています。代わりに個人用アクセストークンを使用してください[重複]。
-
[解決済み] Git作者不明
-
[解決済み] なぜGitHubはSSHよりもHTTPSを推奨しているのですか?
-
[解決済み】HTTPSとSSL3_GET_SERVER_CERTIFICATE:証明書の検証に失敗、CAは問題なし
-
[解決済み] [Solved] javax.net.ssl.SSLHandshakeException の解決: sun.security.validator.ValidatorException: PKIX パスの構築に失敗しました エラー?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Gitマージで「すでに最新」と報告されるが、違いはある
-
[解決済み】Githubの認証に失敗した - ... GitHubはシェルアクセスを提供しない
-
[解決済み] [Solved] 作業ツリーのディレクトリ 'example.com' を作成できませんでした。パーミッションが拒否されました
-
git revert 複数コミット
-
[解決済み] git が「Pull is not possible because you have unmerged files」と表示するのはなぜですか?
-
[解決済み] Git pull - マージする前に移動または削除してください。
-
[解決済み] Git エラー : 'upstream' は git リポジトリでないようです。
-
[解決済み] GitHub - github 443 windowsへの接続に失敗しました/ gitHubへの接続に失敗しました - エラーなし
-
[解決済み] 履歴のある SVN リポジトリを新しい Git リポジトリに移行するにはどうすればよいですか?
-
[解決済み] CygwinでHTTPSのURLでwgetを実行したときに、証明書エラーを修正するにはどうすればよいですか?