代码安全是一件比较严肃的事情。看到这么多人使用 GitLab,我自己也经常在校外使用 GitLab,安全的 HTTPS 传输是必要的。由于 gitlab.lug.ustc.edu.cn 是三级域名,LUG 也没有顶级域名 ustc.edu.cn 的管理权限,搞 SSL 证书是比较麻烦的。

为此,我申请了 gitgeek.net 域名,去 StartSSL 申请了一个免费 SSL 证书。没办法,GoDaddy 非促销季的证书太贵了;要是那位高富帅给 USTC 搞个 Verisign 的 Extended Validation,我可以给TA所有服务器的 root 🙂

总之,GitLab 挂上小绿锁了:

screenshot

在 Ubuntu 和 Windows 下的主流浏览器中测试,均可以正常访问。在 Debian 和 cygwin 中用 git clone 和 curl 也可以正常访问。由于 wget 1.12 的一个 bug,会提示证书不匹配,升级 wget 即可。

如果大家发现小绿锁没有挂上,或者 HTTPS 访问出现任何问题,请把你用的操作系统、浏览器或命令行工具的名称及版本号发到 [email protected]

原来的 http://gitlab.lug.ustc.edu.cn 仍然可以使用,只不过登出之后,登录会跳到 gitgeek.net……… GitLab 就是这样的,我本来不想这样……

Tips for GitLab Maintainers

修改配置文件后,最好清除 Redis Cache。例如 Gravatar 的 URL 会缓存,今天下午我百思不得其解的小黄锁问题就是由于早先生成的 HTTP URL 被缓存了。清除缓存步骤:

  1. sudo -u git -i
  2. cd gitlab
  3. RAILS_ENV=production bundle exec rake cache:clear

重启 gitlab 服务需要比较长的时间,虽然 sudo service gitlab restart 会立即显示成功,但事实上还是原来的 sidekiq 和 unicorn 在运行。可以用 sudo service gitlab status 和 pstree -pa 来查看 gitlab 服务的状态。如果发现“残余进程”,要 kill 掉再 sudo service gitlab start。

如果 gitlab 服务起不来,可以查看 ~git/gitlab/log/ 里的日志文件。

注意,从 StartSSL 申请的免费证书是 intermediate CA 签发的,为了在 git clone 和 curl 中正常使用,需要 cat intermediate.CA.crt >> gitlab.crt,把自己的证书和 intermediate CA 证书连接在一起。