一部の 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 のスコープに適用します。リポジトリ単位の構成にすれば、この経路をその作業コピーだけに限定できます。

設定役割
proxySSLCAInfoHTTPS プロキシの検証に使う CA バンドル
proxySSLCertそのプロキシに提示するクライアント証明書
proxySSLKeyクライアント証明書に対応する秘密鍵
proxySSLCertPasswordProtected保護されたプロキシ証明書と鍵素材に対する Git のパスワード入力を有効にする

https:// 形式のプロキシ URL がこの TLS のやり取りには不可欠です。HTTPS リポジトリへ CONNECT を運ぶだけの平文 HTTP プロキシは、それによって自分のリスナー上で TLS クライアント証明書認証を行うわけではありません。

リポジトリの証明書信頼とリポジトリのクライアント証明書には、それぞれ独自の ssl 構成があります。同様に、Proxy-Authenticate を使う HTTP プロキシのチャレンジは別の認証方式です。

この構成を維持する際は、リンクされた libcurl のバージョン、TLS バックエンド、対応する証明書形式を確認してください。PEM 証明書へのパスは、各プラットフォームの証明書ストアインターフェースの移植可能な代替にはなりません。

関連記事