本地生成https证书
我的gitlab安装环境为Ubuntu 18.04,安装好之后默认使用的是HTTP协议访问;没有HTTPS协议安全于是自己搞了搞,各种查资料啊,虽然中间也有不懂得地方,但是总算是成功了。接下来给大家详细的描述一下步骤:
想要配置https协议,必须要有一个https的证书,由于我是在本地尝试的,所以自己生成了一个证书
1、生成证书,建立权限并生成证书。
mkdir -p /etc/gitlab/ssl && chmod 700 /etc/gitlab/ssl && cd/etc/gitlab/ssl
2、创建服务器私钥,需要输入一个密码,之后也会用到,我设置的123456
openssl genrsa-des3 -out server.key 1024
3、创建签名的证书(csr)
openssl req -new -key server.key -out server.csr
在加载SSL支持的Nginx并使用上述私钥时要除去刚才设置的口令:
先备份刚才的csr文件
cp server.key server.key.org
去除命令,直接覆盖了server.key了
openssl rsa -in server.key.org -out server.key
最后标记证书使用上述私钥和CSR:(把csr标记后转换成了crt nginx要用key和crt文件)
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
做完这些,证书什么的就完成了,接下来修改配置文件
vim /etc/gitlab/gitlab.rb
需要修改的配置:
external_url"https://192.168.61.128" nginx['redirect_http_to_https']= true nginx['ssl_certificate']= "/etc/gitlab/ssl/server.crt" nginx['ssl_certificate_key']= "/etc/gitlab/ssl/server.key"
# 下边这三项不知道改不改,有的说改了,有的说没改;仅供参考
nginx['enable'] = true
nginx['redirect_http_to_https'] = true
nginx['redirect_http_to_https_port'] = 80
最后执行
gitlab-ctl reconfigure
不用配置443端口,因为已经自动指向了。接下来看看成果吧,完美的https
正经的HTTPS证书版本,阿里云的ssl证书
首先拿到两个证书,一个是key文件,一个为pem文件。
将pem文件直接改为crt后缀的文件,哈哈。
创建/etc/gitlab/ssl目录,然后在其中复制密钥和证书:
sudo mkdir -p /etc/gitlab/ssl sudo chmod 755 /etc/gitlab/ssl
将两个证书放到ssl的目录下,我是直接用sz,rz命令上传的。
/etc/gtilab/gitlab.rb # 文件修改的内容
external_url "https://git.bjdvt.com" # 外往访问的地址 nginx['enable'] = true nginx['redirect_http_to_https'] = true
# 指向两个证书文件的路径 nginx['ssl_certificate'] = "/etc/gitlab/ssl/git.bjdvt.com.crt" nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/git.bjdvt.com.key"
最后配置完记得
gitlab-ctl reconfigure
感觉不保险的话,那就在重启一个gitlab:
gitlab-ctl restart
还有你的云服务器的防火墙443的端口一定要开启,不然无法访问。我在此处挣扎了很久,很难受
gitlab官方配置地址:https://docs.gitlab.com/omnibus/settings/nginx.html