GitLab ce 社區版本的https方式配置(yum)

來源:互聯網
上載者:User

標籤: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)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.