Git の HTTPS プロキシが独自のクライアント証明書を要求することがある
プロキシの TLS CA、クライアント証明書、秘密鍵を、リポジトリの TLS 設定や HTTP ログイン設定とは別に構成します。
一部の HTTPS フォワードプロキシは、Git からプロキシへの TLS 接続時にクライアント証明書を要求します。これはリポジトリへのログインとは別の認証のやり取りです。
PEM ファイルを使う互換性のある Git/libcurl の TLS バックエンドでは、該当する構成は次の形になります。
[http]
proxy = https://proxy.example:8443
proxySSLCAInfo = /secure/proxy-ca.pem
proxySSLCert = /secure/proxy-client.pem
proxySSLKey = /secure/proxy-client.key
proxySSLCertPasswordProtected = trueプロキシの TLS 構成のために提供された実際のファイルを使用します。構成は想定する Git のスコープに適用します。リポジトリ単位の構成にすれば、この経路をその作業コピーだけに限定できます。
| 設定 | 役割 |
|---|---|
| proxySSLCAInfo | HTTPS プロキシの検証に使う CA バンドル |
| proxySSLCert | そのプロキシに提示するクライアント証明書 |
| proxySSLKey | クライアント証明書に対応する秘密鍵 |
| proxySSLCertPasswordProtected | 保護されたプロキシ証明書と鍵素材に対する Git のパスワード入力を有効にする |
https:// 形式のプロキシ URL がこの TLS のやり取りには不可欠です。HTTPS リポジトリへ CONNECT を運ぶだけの平文 HTTP プロキシは、それによって自分のリスナー上で TLS クライアント証明書認証を行うわけではありません。
リポジトリの証明書信頼とリポジトリのクライアント証明書には、それぞれ独自の ssl 構成があります。同様に、Proxy-Authenticate を使う HTTP プロキシのチャレンジは別の認証方式です。
この構成を維持する際は、リンクされた libcurl のバージョン、TLS バックエンド、対応する証明書形式を確認してください。PEM 証明書へのパスは、各プラットフォームの証明書ストアインターフェースの移植可能な代替にはなりません。