使用HTTPS证书执行Git Push时触发X.509读取错误求助
解决Git无法读取P12客户端证书的问题
Git底层依赖OpenSSL,仅支持PEM格式的分离式证书与私钥,而P12是PKCS#12格式的容器文件,需通过OpenSSL转换为Git可识别的格式,步骤如下:
1. 提取PEM格式客户端证书
执行以下命令,从P12文件中导出仅包含客户端证书的PEM文件:
openssl pkcs12 -in /home/grim/xxxx.p12 -clcerts -nokeys -out client-cert.pem
- 执行时需输入P12文件的保护密码
-clcerts:仅提取客户端证书(排除CA证书)-nokeys:不导出私钥
2. 提取PEM格式私钥
先导出加密状态的私钥:
openssl pkcs12 -in /home/grim/xxxx.p12 -nocerts -out client-key-encrypted.pem
同样需要输入P12密码,若希望Git无需每次输入密码,可将私钥解密为无密码版本:
openssl rsa -in client-key-encrypted.pem -out client-key.pem
执行解密命令时需输入私钥的保护密码(与P12密码一致)
3. 配置Git使用转换后的文件
设置证书与私钥路径:
git config http.sslCert /path/to/client-cert.pem git config http.sslKey /path/to/client-key.pem
若保留加密私钥,需额外配置密码:
git config http.sslKeyPassword "your-p12-password"
4. 修复私钥文件权限
Git要求私钥文件权限必须为600(仅所有者可读可写),否则会拒绝使用:
chmod 600 client-key.pem
完成以上步骤后,重新执行git push即可正常推送代码。
内容的提问来源于stack exchange,提问作者Grim
相关产品推荐
相关产品推荐

