使用DoD通用访问卡(CaC)在Mac上远程访问Git的问题
解决Mac上DoD CaC卡Git/Bitbucket身份验证失败问题
我之前帮团队里的Mac用户解决过一模一样的问题——浏览器能正常选CaC证书访问Bitbucket仓库,但Git拉取/推送就报fatal: unable to access... SSLv3 alert handshake failure,Windows同事却完全正常。下面是亲测有效的解决步骤:
1. 先确认CaC卡基础环境没问题
- 确保你已经安装了DoD根证书包(没装的话去DoD官方指定渠道下载安装)
- 插好CaC卡后,打开「钥匙串访问」,能看到带你姓名的DoD证书(说明卡阅读器和驱动正常识别)
2. 让Git关联Mac密钥链里的CaC证书
浏览器能正常用证书是因为它直接调用了Mac的系统密钥链,但Git默认没配置这个。直接运行下面的命令让Git使用系统密钥链:
git config --global http.sslCertificates "/Library/Keychains/System.keychain" git config --global http.sslKey "/Library/Keychains/System.keychain"
如果想更精准指定你的证书,也可以从钥匙串导出证书为.p12文件(导出时需要输入CaC卡PIN),然后配置Git指向这个文件:
# 导出证书到本地(替换证书名称为你自己的) openssl pkcs12 -export -in "/path/to/your-dod-cert.pem" -out ~/my-cac-cert.p12 # 配置Git使用该证书 git config --global http.sslCert ~/my-cac-cert.p12 git config --global http.sslKey ~/my-cac-cert.p12
3. 强制Git使用兼容的SSL/TLS版本
报错里的SSL3_READ_BYTES说明Git默认用的SSL版本太旧,Bitbucket已经不支持了,强制Git使用TLS 1.2及以上版本:
git config --global http.sslVersion tlsv1.2
4. 切换Git的SSL后端为Mac原生实现
Mac上Git默认可能用的是OpenSSL后端,切换到原生的secure-transport能更好地和系统密钥链集成(和浏览器用的是同一套证书体系):
git config --global http.sslBackend secure-transport
5. 测试验证
配置完成后,直接拉取仓库测试:
git pull https://privatebitbucket.com/repo.git
这时候应该会弹出输入CaC卡PIN的窗口,输入后就能正常执行拉取/推送操作了。
为什么Windows同事没这个问题?
Windows版的Git(比如Git for Windows)默认就和系统证书存储深度集成,加上DoD CaC驱动在Windows上的适配更完善,所以不需要额外配置就能直接用。
内容的提问来源于stack exchange,提问作者John G
相关产品推荐
相关产品推荐

