社内からGit Cloneできない! SSL certificate problemってなに?!
社内からGit Cloneできない! SSL certificate problemってなに?!
社内ネットワークからGitHubを使おうとすると、「あれ? git clone
ができない…」なんてこと、ありませんか? こんなエラーメッセージが出てくるやつです。
$ git clone https://github.com/example-user/sample-repo.git
Cloning into 'sample-repo'...
fatal: unable to access 'https://github.com/example-user/sample-repo.git/':
SSL certificate problem: unable to get local issuer certificate
「じゃあ SSH で!」と思って試してみても、今度はタイムアウトしちゃったり…。
このエラーはなに?
このエラー、社内のネットワーク環境というかProxyが原因です。
多くの会社では、インターネットとのやり取りをセキュリティのために「プロキシサーバー」がチェックしています。HTTPS の暗号化通信も、一度プロキシサーバーが中身をふんわり確認してから私たちに届けてくれているんですね。そのとき、プロキシが「私がちゃんと確認しましたよ!」という証として、会社独自の証明書を通信にくっつけることがあります。
ですが、Git クライアントは会社独自の証明書を見ても「本当に信頼できるの?」と判断できず、「発行元が分からないよ!」というエラーを出してしまうことがあるんです。こんなとき、ちょっと困っちゃいますよね!
そもそもGitのSSL通信ってどうなってる?
Git for Windows は、デフォルトで Mozilla が作っている「信頼できる証明書リスト」を参考に通信相手の安全性をチェックしています。しかし、そのリストには社内で発行されている証明書は含まれていません。だからこそ、先ほどのようなエラーが出てしまうことがあるわけです。
で、対処法は?
では、本題の解決策です!
Git に「いつもの証明書リストじゃなくて、Windows が持っている証明書ストア(SChannel)を使って!」とお願いしましょう。
git config --global http.sslBackend schannel
これだけで OK です!
このコマンドを実行すると、Git が Windows の「証明書ストア」に登録されている社内 CA 証明書を見にいくようになり、SSL エラーが出にくくなります。魔法みたいにサクッと解決できるので、ぜひ試してみましょう!
ただし、Git のバージョンが少し古いと schannel
が正しく動作しない場合があります。念のため、Git を最新版にアップデートしておくことをおすすめします!
まとめ
-
会社のプロキシが HTTPS 通信をチェックしている環境だと、Git が SSL 証明書をうまく検証できず、エラーが発生することがあります。
-
そんなときは落ち着いて、次のコマンドを実行してみましょう!
git config --global http.sslBackend schannel
-
この設定変更だけで、多くの場合、あの厄介なエラーとおさらばできます!いつも通り
git clone
やgit push
ができるようになりますよ。
たった一行の設定変更で解決できて、本当にお手軽ですよね!!
もし同じようなエラーで困っている方がいたら、ぜひ試してみてください。
皆さんの Git ライフが、少しでも快適になることを願っています!!
Discussion