0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Windowsに証明書を入れたのにGitでSSLエラーになる理由とschannel設定

0
Last updated at Posted at 2026-08-06

社内GitLabなどをHTTPS化したあと、Windowsに社内CA証明書をインポートしたのに、Git for Windowsで clone / fetch / pull / push が失敗することがあります。

ブラウザではGitLabにアクセスできるのに、Gitコマンドでは以下のようなエラーになるケースです。

schannel: SEC_E_UNTRUSTED_ROOT

または、

SSL peer certificate or SSH remote key was not OK

この場合、Windowsに証明書を入れただけでは、Git側がその証明書を参照できていない可能性があります。

何が起きているのか

Git for WindowsのHTTPS通信では、TLS処理に使う仕組みとして主に次の2つがあります。

TLSバックエンド 参照する証明書
Schannel Windowsの証明書ストア
OpenSSL Git/OpenSSL側の証明書設定

Windowsに社内CA証明書をインポートすると、Windowsの「信頼されたルート証明機関」に証明書が登録されます。

この証明書は、Schannelを使うアプリケーションから参照されます。

一方で、Git for WindowsのTLSバックエンドがOpenSSL側になっている場合、Windowsの証明書ストアではなく、Git/OpenSSL側の証明書設定を参照することがあります。

そのため、ブラウザでは問題なくアクセスできるのに、Gitコマンドでは証明書エラーになることがあります。

対応方針

Windowsにインポートした証明書をGit for Windowsから利用したい場合は、GitのTLSバックエンドを schannel に寄せるのが分かりやすいです。

以下を実行します。

git config --global http.sslBackend schannel

これで、Git for WindowsのHTTPS通信がWindows標準のSchannelを使うようになります。

Schannelを使うことで、Windowsの「信頼されたルート証明機関」にインポートした証明書が参照されます。

設定を確認する

設定結果は以下で確認できます。

git config --global --get http.sslBackend

以下のように表示されればOKです。

schannel

どの設定ファイルから読み込まれているかも確認したい場合は、以下を実行します。

git config --show-origin --get http.sslBackend

表示例です。

file:C:/Users/your-name/.gitconfig    schannel

注意点

--global の設定は、コマンドを実行したWindowsユーザーにだけ適用されます。

たとえば、証明書のインポートを管理者ユーザーで行ったとしても、普段Gitを使うユーザーには git config --global の設定は反映されません。

必ず、普段Gitを使っているWindowsユーザーで以下を実行してください。

git config --global http.sslBackend schannel

TortoiseGitを使っている場合

TortoiseGitを使っている場合も、内部では指定された git.exe を使っています。

そのため、TortoiseGitが参照しているGit実行ファイルの設定が関係します。

TortoiseGitの設定画面で、以下を確認します。

TortoiseGit
→ Settings
→ General
→ Git.exe Path

たとえば、Git.exe Path が以下の場合を考えます。

C:\Program Files\Git\bin\git.exe

以下のコマンド例は、PowerShellで実行する場合の記法です。

PowerShellでは、スペースを含むパスの実行ファイルを呼び出すために、呼び出し演算子の & を使用します。

& "C:\Program Files\Git\bin\git.exe" config --show-origin --get http.sslBackend

必要であれば、同じ git.exe に対して schannel を設定します。

& "C:\Program Files\Git\bin\git.exe" config --global http.sslBackend schannel

コマンドプロンプト(cmd.exe)で実行する場合は、& を付けずに次のように実行します。

"C:\Program Files\Git\bin\git.exe" config --show-origin --get http.sslBackend

設定する場合も同様です。

"C:\Program Files\Git\bin\git.exe" config --global http.sslBackend schannel

やらない方がよい対応

証明書エラーを回避するために、以下のような設定を見かけることがあります。

git config --global http.sslVerify false

これは証明書の検証自体を無効化する設定です。

一時的にはエラーを回避できるかもしれませんが、セキュリティ上おすすめしません。

社内CA証明書をWindowsへ正しく登録したうえで、Git for WindowsのTLSバックエンドを schannel に設定する方が安全です。

まとめ

Windowsに証明書をインポートしても、Git for Windowsがその証明書を参照しているとは限りません。

Git for WindowsのTLSバックエンドがOpenSSL側になっている場合、Windowsの証明書ストアに入れた証明書が使われず、SSL証明書エラーになることがあります。

Windowsに登録した証明書をGit for Windowsから使いたい場合は、以下を設定します。

git config --global http.sslBackend schannel

社内GitLabなど、Windows端末に社内CA証明書を配布して使う環境では、Git for Windowsも schannel に寄せておくと運用しやすくなります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?