GitLab ce 社区版本的https方式配置(yum)nginx
上次安装了gitlab 可是不是https如今须要全民https了今天就给你们配置https。(默认的不是https的访问登录和git也不https的)git
先备份一下我们的配置和文件,以防我们修改错误回退数据库
备份配置直接执行,先进入本身的备份目录.centos
tar -zPcf$(date "+etc-gitlab_%Y%m%d_%H%M%S.tar.gz") /etc/gitlab
备份文件,默认在 /var/opt/gitlab/backup目录不知道能够看配置文件浏览器
gitlab_rails['backup_path']= "/var/opt/gitlab/backups" 的属性bash
若是出问题直接就能够恢复原装服务器
恢复:中止数据库服务执行恢复指定文件编号ide
gitlab-ctl stop unicorn gitlab-ctl stop sidekiq gitlab-rake gitlab:backup:restore BACKUP=1484296250
输入yes就好了gitlab
以后把服务重启下:gitlab-ctl restart 就好了加密
生成证书:
由于我这是本身玩,没有浏览器信任机构的证书,就本身命令生成一个证书,这也是加密的只是浏览器不认。
创建证书并设置权限,必须是这个权限:
mkdir -p/etc/gitlab/ssl && chmod 700 /etc/gitlab/ssl && cd/etc/gitlab/ssl
建立服务器私钥,命令会让你输入一个口令:(最好不要输入密码,好像不输入不经过,我输入1234以后再用命令把这个密码取消)
openssl genrsa-des3 -out server.key 1024
建立签名请求的证书(CSR):
openssl req -new-key server.key -out server.csr
须要输入刚才的密码,国家省份城市域名邮箱等信息
最后就生成了两个文件
在加载SSL支持的Nginx并使用上述私钥时要除去刚才设置的口令:
先备份刚才的csr文件
cp server.keyserver.key.org
去除命令,直接覆盖了server.key了
openssl rsa -inserver.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
直接修改gitlab的配置文件在运行gitlab-ctl reconfigure ,这个命令会把本身配置的文件导入到nginx的配置文件,运行这个命令会让nginx配置变化能够看下:
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"
运行gitlab-ctl reconfigure(使配置生效)后Nginx的配置变成了:
会自动添加Http80跳转到443的配置的不用本身写的。
gitlab-ctlreconfigure命令很是爽的
最后重启服务
以上所有完成以后, 使用gitlab-ctl restart(来重启全部服务), 便可使用HTTPS访问GitLab了,那个证书风险是由于我们的https不是证书机构颁发的。
重启完成后我们要看下nginx的配置key和crt路径对否。
下面是效果:
参考:https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/nginx.md
按照上面的方式已经实现了我们的Https的配置了下面是我遇到的问题。
问题汇总:
我以前看了好多人的配置,他们是要本身修改nginx的配置,
先配置nginx来支持https
默认配置文件目录/var/opt/gitlab/nginx/conf
gitlab-http.conf nginx.conf 这两个都须要配置
先配置gitlab-http.conf listen端口换成了443
增长内容为:
listen *:443
ssl on;
ssl_certificate /etc/gitlab/ssl/server.crt;
ssl_certificate_key/etc/gitlab/ssl/server.key;
ssl_protocols SSLv3 TLSv1;
ssl_ciphersALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM;
增长一个配置文件用来HTTP跳转HTTPS:
/var/opt/gitlab/nginx/conf/index.conf
server {
listen *:80;
server_name 192.168.61.128;
rewrite ^(.*)$ https://$host$1 permanent;
}
最后修改/var/opt/gitlab/nginx/conf/nginx.conf配置文件, 在其中加入如下内容, 来载入刚才的配置文件index.conf(须要把 gzip off 关闭;):
include/var/opt/gitlab/nginx/conf/index.conf;
这样配置完成后再修改gitlab.rb文件后运行gitlab-ctl reconfigure
命令后就把刚才上面我们加的nginx配置都冲掉了。
只能这么运行了:
gitlab-ctl stop nginx 中止nginx
gitlab-ctl start nginx 启动nginx
这样永远不能运行gitlab-ctl reconfigure 命令了。这种方式不太好。我用的最上面那种方式。
还有个问题就是:
用git命令clone的时候
git clone https://192.168.61.128/root/test.git 出现错误: fatal: destination path 'test' already exists and is not an empty directory. git config --global http.sslVerify false 关闭就能够clone, 就是我们证书不是认证机构发的缘由 git config --global http.sslVerify true 开启
到这里今天的https就算完成了。很晚了,2017年1月14日 00:45:39 睡觉啦