問題の概要
このエラーは通常、日常的な git clone や push の最中に発生します。データの転送が成功する代わりに、Gitが接続をブロックし、「local issuer certificate(ローカル発行者の証明書)」に関する不可解なエラーを返します。
fatal: unable to access 'https://github.com/user/repo.git/': SSL certificate problem: unable to get local issuer certificate
根本的な原因は、Gitがユーザーの安全のために慎重になりすぎていることにあります。GitHubやGitLab、あるいは社内のBitbucketインスタンスなど、通信先のサーバーが正当なものであると確認できないため、接続を拒否しているのです。信頼されたルート証明機関(CA)への信頼の連鎖(Chain of Trust)が途切れている状態です。
要約:クイックフィックス
Windows を使用している場合は、次のコマンドを実行するだけで問題の90%が即座に解決します。
git config --global http.sslBackend schannel
セキュリティを考慮する必要がない一時的な環境(閉鎖されたローカル環境など)で急いでいる場合は、チェックを完全にバイパスすることも可能です。ただし、この方法は慎重に使用してください。
git config --global http.sslVerify false
なぜこのエラーが発生するのか?
HTTPS接続を確立する際、サーバーはSSL証明書を提示します。Gitはこれをローカルにある信頼された証明機関の「アドレス帳」と照合します。IDが一致しない、または署名者が不明な場合、Gitは接続を遮断します。
主な原因は以下の通りです:
- 企業用ファイアウォール: ZscalerやFortinetなどのシステムは、脅威スキャンのためにトラフィックを傍受することがあります。その際、実際の証明書をGitが認識できない企業用証明書に置き換えてしまう場合があります。
- 古い証明書: ローカルのGitインストールが、最新の証明機関を含まない2年前のCAバンドルを使用している可能性があります。
- システムの不一致: Git for WindowsがOSの信頼済み証明書を無視し、存在しない特定の
ca-bundle.crtファイルを探しに行くことがあります。
解決策
1. Windows Secure Channelに切り替える(Windowsに最適)
標準的なGitのインストールではOpenSSLライブラリが使用されます。OpenSSLは強力ですが、証明書ファイルの手動メンテナンスが必要です。「schannel」バックエンドに切り替えることで、Windowsネイティブの証明書ストアを使用するようにGitに指示できます。
git config --global http.sslBackend schannel
WindowsはChromeやEdgeのために証明書の更新を既に行っているため、この修正により、手動で調整することなく企業プロキシや最新のCAが即座に機能するようになります。
2. CAバンドルを手動で更新する
LinuxやmacOSのユーザーは、基盤となる証明書ファイルを更新することで解決することが多いです。curlプロジェクトから、100以上の信頼されたCAを含む最新のバンドルを直接取得できます。
- 最新のバンドルをダウンロードします:curl.se/ca/cacert.pem
~/.git-certs/cacert.pemなどの安全な場所に移動します。- Gitが新しいファイルを参照するように設定します:
git config --global http.sslcainfo "/home/user/.git-certs/cacert.pem"
3. 会社のカスタム証明書を追加する
IT部門がセキュリティのために「中間者(Man-in-the-Middle)」プロキシを使用している場合、その特定のプロキシを信頼するようにGitに教える必要があります。ネットワークチームから .pem または .cer ファイルを入手してください。
git config --get http.sslcainfoを実行して現在のバンドルの場所を確認します。空の場合はC:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crtを探してください。- そのファイルを管理者権限のあるテキストエディタで開きます。
- 企業証明書のテキスト全体(
BEGINタグとENDタグを含む)を末尾に追記します。
4. 正しい設定で再インストールする
設定が複雑になりすぎて解決が難しい場合もあります。Git for Windowsを再インストールする際は、**「Choosing HTTPS transport backend」の画面で「Use the native Windows Secure Channel library」**を選択してください。これにより、最初から schannel の修正が適用された状態でインストールされます。
修正の確認方法
接続テストのためだけに2GBもあるリポジトリをクローンして時間を無駄にしないでください。代わりに ls-remote を使ってサーバーに確認を行います。
git ls-remote https://github.com/user/repo.git
コミットハッシュのリストが表示されれば、正常に復旧しています。エラーが続く場合は、git config --list --show-origin を実行して、ローカルプロジェクトの設定がグローバル設定を上書きしていないか確認してください。.git/config ファイル内に http.sslverify のエントリが隠れていないか探します。

