gitlab/harbor服务https方式登录报错问题解决

故障现场

  • 使用git客户端工具(如SourceTree)clone时报证书问题

公司申请了泛域名证书,在git上面是已经配置了的;浏览器和Mac下的SourceTree访问正常,但是Windows下许多客户端都会像下面一样报错

$ git clone https://app-git.ppgame.com/test/test.git

fatal: unable to access 'https://app-git.ppgame.com/test/test.git': SSL certificate problem: unable to get local issuer certificate
  • docker客户端登录harbor报证书不可信错误
# docker login hub-docker.ppgame.com
Username: xxx
Password: 
Error response from daemon: Get https://hub-docker.ppgame.com/v1/users/: x509: certificate signed by unknown authority

临时解决办法

这两个问题都是证书问题,git有关闭证书验证的参数,直接设置一下就可以了

git config --global http.sslVerify false

harbor因为线上服务我们是默认使用https方式无法关闭,此时需要将证书装入docker客户端所在服务器,并重启docker服务,让客户端认为证书是可信的

#  参考 https://github.com/vmware/harbor/blob/master/docs/configure_https.md
# 
# centos系统
$ cp server.pem /etc/pki/ca-trust/source/anchors/hub-docker.ppgame.com.crt
$ update-ca-trust
$ systemctl daemon-reload
$ systemctl restart docker

根因

检测后发现,这两个自建的服务,虽然都配置了ssl,但只是最终签发给泛域名*.ppgame.com的证书,缺少了签发者的中间证书

浏览器和一些工具内置了常见的根证书,在访问的时候,会收到服务器返回的域名证书,如果缺少中间证书,会自动去下载或使用访问别的网站时缓存下来的相同中间证书。这样就算网站没有正确配置,也是能正常访问的

但是更多服务器端的工具是不是主动去寻找并下载的,便报错了

解决

补齐中间证书

链接:
填坑记-ssl中间证书