我在使用GIT连接到受客户端证书保护的GIT服务器时遇到问题。我正在尝试使用Azure Pipeline Agent在全新的Azure VM上运行作业。
我正在连接到本地TFS实例,该实例通过客户端证书保护到Internet。
经过一番尝试和错误,我得到了正确形状的证书,以将代理连接到服务器。像这样使用OpenSSL
openssl pkcs12 -in cert.pfx -cacerts -nokeys -out ca.pem -passin pass:
openssl pkcs12 -in cert.pfx -clcerts -nokeys -out clientcert.pem -passin pass:
openssl pkcs12 -in cert.pfx -clcerts -nocerts -out clientcert-key-pass.pem -passin pass: -passout pass:$pfxpassword
openssl pkcs12 -in cert.pfx -out temp.pem -nodes -passin pass:
openssl pkcs12 -export -out cert-secure.pfx -in temp.pem -passout pass:$pfxpassword
Run Code Online (Sandbox Code Playgroud)
那就是乐趣的终结...
对于背景,我在Ubuntu 18.04上运行,并尝试了GIT 2.17和2.22。
当我在具有相同证书集的计算机上运行curl时,它可以正确地超过服务器上的客户端证书安全性,并让我访问基础服务,该服务返回预期的401。
但是,当使用来自GIT的相同证书时,我始终收到403错误,并且服务器由于客户端证书问题而拒绝了连接。
我正在为GIT运行的命令是
GIT_CURL_VERBOSE=1 GIT_TRACE=1 git -c http.sslcainfo="/home/scott/ca.pem" -c http.sslcert="/home/scott/clientcert.pem" -c http.sslkey="/home/scott/clientcert-key-pass.pem" -c http.sslCertPasswordProtected=true fetch --force --tags --prune --progress --no-recurse-submodules …
git authentication https ssl-certificate azure-virtual-machine