標籤:gitlab yum https nginx git
GitLab ce 社區版本的https方式配置(yum)
上次安裝了gitlab 但是不是https現在需要全民https了今天就給大家配置https。(預設的不是https的訪問登陸和git也不https的)
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M01/8C/D1/wKiom1h49uCzyV4LAAIOJE0C_W8696.png" title="1.png" alt="wKiom1h49uCzyV4LAAIOJE0C_W8696.png" />
先備份一下咱們的配置和檔案,以防咱們修改錯誤回退
備份配置直接執行,先進入自己的備份目錄.
tar -zPcf$(date "+etc-gitlab_%Y%m%d_%H%M%S.tar.gz") /etc/gitlab
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M01/8C/CE/wKioL1h49w_xfGybAAEPxfRMCUI146.png" title="2.png" alt="wKioL1h49w_xfGybAAEPxfRMCUI146.png" />
備份檔案,預設在 /var/opt/gitlab/backup目錄不知道可以看設定檔
gitlab_rails[‘backup_path‘]= "/var/opt/gitlab/backups" 的屬性
如果出問題直接就可以恢複原裝
恢複:停止資料庫服務執行恢複指定檔案編號
gitlab-ctl stop unicorngitlab-ctl stop sidekiqgitlab-rake gitlab:backup:restore BACKUP=1484296250
輸入yes就行了
之後把服務重啟下:gitlab-ctl restart 就行了
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M00/8C/D1/wKiom1h49y_Ac9hsAALIvBTnBqk052.png" title="3.png" alt="wKiom1h49y_Ac9hsAALIvBTnBqk052.png" />
產生認證:
因為我這是自己玩,沒有瀏覽器信任機構的認證,就自己命令產生一個認證,這也是加密的只是瀏覽器不認。
建立認證並設定許可權,必須是這個許可權:
mkdir -p/etc/gitlab/ssl && chmod 700 /etc/gitlab/ssl && cd/etc/gitlab/ssl
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M02/8C/D1/wKiom1h490mzw4KsAAGa0glJFR0055.png" title="4.png" alt="wKiom1h490mzw4KsAAGa0glJFR0055.png" />
建立伺服器私密金鑰,命令會讓你輸入一個口令:(最好不要輸入密碼,好像不輸入不通過,我輸入1234之後再用命令把這個密碼取消)
openssl genrsa-des3 -out server.key 1024
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M02/8C/CE/wKioL1h496ySwgaTAAI9cVW4JUg534.png" title="5.png" alt="wKioL1h496ySwgaTAAI9cVW4JUg534.png" />
建立簽章要求的認證(CSR):
openssl req -new-key server.key -out server.csr
需要輸入剛才的密碼,國家省份城市網域名稱郵箱等資訊
最後就產生了兩個檔案
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M00/8C/CE/wKioL1h493riOjaUAAOUfSD51hc116.png" title="6.png" alt="wKioL1h493riOjaUAAOUfSD51hc116.png" />
在載入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
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M00/8C/D1/wKiom1h4-OOSt0EzAAIDNQdEf7s073.png" title="7.png" alt="wKiom1h4-OOSt0EzAAIDNQdEf7s073.png" />
直接修改gitlab的設定檔在運行gitlab-ctl reconfigure ,這個命令會把自己配置的檔案匯入到nginx的設定檔,運行這個命令會讓nginx配置變化可以看下:
Vim /etc/gitlab/gitlab.rb
需要修改的配置:
external_url"https://192.168.61.128"nginx[‘redirect_http_to_https‘]= truenginx[‘ssl_certificate‘]= "/etc/gitlab/ssl/server.crt"nginx[‘ssl_certificate_key‘]= "/etc/gitlab/ssl/server.key"
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M02/8C/D1/wKiom1h4-hei5bp2AAKA87WGyqg411.png" title="12.png" alt="wKiom1h4-hei5bp2AAKA87WGyqg411.png" />
650) this.width=650;" src="https://s3.51cto.com/wyfs02/M00/8C/D1/wKiom1h5B66yrfVxAAO8-i0DafY556.png" title="17.png" alt="wKiom1h5B66yrfVxAAO8-i0DafY556.png" />
運行gitlab-ctl reconfigure(使配置生效)後Nginx的配置變成了:
會自動添加Http80跳轉到443的配置的不用自己寫的。
gitlab-ctlreconfigure命令非常爽的
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M01/8C/D1/wKiom1h5CAngDUIbAAR646HgDBc717.png" title="18.png" alt="wKiom1h5CAngDUIbAAR646HgDBc717.png" />
最後重啟服務
以上全部完成之後, 使用gitlab-ctl restart(來重啟所有服務), 即可使用HTTPS訪問GitLab了,那個認證風險是因為咱們的https不是認證機構頒發的。
重啟完成後咱們要看下nginx的配置key和crt路徑對否。
下面是效果:
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M00/8C/CE/wKioL1h4_I-Q-YYKAAG2r7WhSQg433.png" title="13.png" alt="wKioL1h4_I-Q-YYKAAG2r7WhSQg433.png" />
參考:https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/nginx.md
http://serverfault.com/questions/665736/ssl-routinesssl23-writessl-handshake-failure-nginx-on-centos-7
按照上面的方式已經實現了咱們的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;
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M01/8C/CE/wKioL1h5AYujk_VZAALyhzz8lrg325.png" title="8.png" alt="wKioL1h5AYujk_VZAALyhzz8lrg325.png" />
增加一個設定檔用來HTTP跳轉HTTPS:
/var/opt/gitlab/nginx/conf/index.conf
server {
listen *:80;
server_name 192.168.61.128;
rewrite ^(.*)$ https://$host$1 permanent;
}
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M02/8C/CE/wKioL1h5Aafwg8PwAAD00HXUDQw102.png" title="9.png" alt="wKioL1h5Aafwg8PwAAD00HXUDQw102.png" />
最後修改/var/opt/gitlab/nginx/conf/nginx.conf設定檔, 在其中加入以下內容, 來載入剛才的設定檔index.conf(需要把 gzip off 關閉;):
include/var/opt/gitlab/nginx/conf/index.conf;
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M01/8C/CE/wKioL1h5AcjRWxWMAAHZgwtqjEk613.png" title="10.png" alt="wKioL1h5AcjRWxWMAAHZgwtqjEk613.png" />
這樣配置完成後再修改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 開啟
650) this.width=650;" src="https://s3.51cto.com/wyfs02/M02/8C/CE/wKioL1h5A7LS_ZAVAAC1lT97nsA570.png" title="16.png" alt="wKioL1h5A7LS_ZAVAAC1lT97nsA570.png" />
到這裡今天的https就算完成了。很晚了,2017年1月14日 00:45:39 睡覺啦
GitLab ce 社區版本的https方式配置(yum)