自托管Atlassian BitBucket SSL证书续期后Git推拉代码遇SSL证书错误
我刚帮团队搞定过几乎一模一样的状况——自托管BitBucket续期DigiCert证书后,全员Git拉推都报SSL证书错误。大概率是证书链不完整或者服务器端部署漏了步骤,毕竟之前都正常,这次肯定是新证书的配置出了小问题。下面是亲测有效的解决流程:
第一步:先检查服务器端的证书链是否完整
DigiCert的证书必须搭配完整的信任链(服务器证书+中间证书+根证书),很多人续期后只替换了服务器证书,没更新中间链,导致客户端无法验证到信任的根证书。
登录你的Ubuntu服务器,找到BitBucket的证书配置文件:
- 如果是BitBucket自带的Tomcat,路径一般是
/opt/atlassian/bitbucket/<你的版本号>/conf/server.xml,找里面的SSLCertificateFile和SSLCertificateChainFile配置项 - 如果用了Nginx反向代理,就看Nginx的站点配置文件,找
ssl_certificate和ssl_trusted_certificate
- 如果是BitBucket自带的Tomcat,路径一般是
用openssl命令验证当前证书链:
openssl s_client -connect 你的BitBucket域名:443 -showcerts输出里如果最后没有显示DigiCert的根证书(比如
DigiCert Global Root CA),说明链不完整。去DigiCert官网下载对应类型的最新中间证书,把它和你的服务器证书合并成一个完整的链文件(顺序要对:服务器证书在前,中间证书在后,根证书可选但建议加上),然后更新配置文件里的路径。
第二步:重启服务让新证书生效
证书更新后必须重启BitBucket(或反向代理),别忘这一步:
# 重启BitBucket服务 sudo service atlbitbucket restart # 如果用了Nginx,还要重启Nginx sudo service nginx restart
第三步:给开发者的临时应急方案(仅临时用,别长期开)
如果服务器端还在排查,开发者可以临时绕过证书验证,但这有安全风险,解决后一定要改回来:
# 仅针对你的BitBucket域名禁用证书验证 git config --global http.https://你的BitBucket域名.sslVerify false # 问题解决后恢复验证 git config --global --unset http.https://你的BitBucket域名.sslVerify
⚠️ 绝对不推荐全局禁用http.sslVerify,会让所有Git操作都跳过证书验证,风险很高。
第四步:排查开发者本地的CA证书库
少数情况是开发者本地系统的CA证书库没有更新DigiCert的根证书,尤其是用旧系统的用户:
- Windows用户:从DigiCert官网下载最新的根证书,双击安装到“受信任的根证书颁发机构”
- Ubuntu/Linux用户:更新系统CA证书:
sudo apt update && sudo apt install --reinstall ca-certificates - macOS用户:打开「钥匙串访问」,导入DigiCert根证书,右键设置为「始终信任」
第五步:验证证书配置是否正确
在服务器上用openssl验证合并后的证书链:
openssl verify -CAfile /path/to/你的完整证书链文件.crt /path/to/你的服务器证书.crt
如果返回OK,说明证书链没问题;如果报错,就是证书文件的顺序或内容有问题,重新调整就行。
我当时就是漏了更新中间证书,导致全员报错,按上面的步骤走,基本半小时内就能搞定。
内容的提问来源于stack exchange,提问作者Ravi Singh

