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 睡覺啦