の証明書のピン留めを有効にしようとしていgit clone
ます。これを行うためにopenssl s_client
、サーバーの hello から証明書を使用して取得しました。
openssl s_client -connect anongit.gentoo.org:443 2>&1 </dev/null
ただし、次のコマンドは実際にはサーバー証明書のチェックに失敗します。
git clone -c http.sslVerify=yes -c 'http.pinnedpubkey=sha256//13fY3xnMhZp6C5wKICfMZVJbN+AtmBbTXSy+sjJvKDE=' https://anongit.gentoo.org/git/repo/gentoo.git
少し調べてみると、ネットワーク ダンプで と の証明書が異なることがわかりましopenssl s_client
たgit clone
。ダンプで確認できる唯一の違い (クライアント ハロー) は、トラフィックの SNIanongit.gentoo.org
と ALPN です。git クライアントとブラウザーを区別するには少なすぎるようです。http/1.1
git
問題は、サーバーがgit
別の証明書で応答するためにクライアントをどの程度正確に検出するかということです。