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

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

上次安裝了gitlab 可是不是https如今須要全民https了今天就給你們配置https。(默認的不是https的訪問登錄和git也不https的)git

wKiom1h49uCzyV4LAAIOJE0C_W8696.png

先備份一下我們的配置和文件,以防我們修改錯誤回退數據庫

備份配置直接執行,先進入本身的備份目錄.centos

tar -zPcf$(date  "+etc-gitlab_%Y%m%d_%H%M%S.tar.gz") /etc/gitlab


wKioL1h49w_xfGybAAEPxfRMCUI146.png

備份文件,默認在 /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 就好了加密

wKiom1h49y_Ac9hsAALIvBTnBqk052.png

生成證書:

由於我這是本身玩,沒有瀏覽器信任機構的證書,就本身命令生成一個證書,這也是加密的只是瀏覽器不認。

創建證書並設置權限,必須是這個權限:

mkdir -p/etc/gitlab/ssl && chmod 700 /etc/gitlab/ssl && cd/etc/gitlab/ssl


wKiom1h490mzw4KsAAGa0glJFR0055.png

建立服務器私鑰,命令會讓你輸入一個口令:(最好不要輸入密碼,好像不輸入不經過,我輸入1234以後再用命令把這個密碼取消)

openssl genrsa-des3 -out server.key 1024

wKioL1h496ySwgaTAAI9cVW4JUg534.png

建立簽名請求的證書(CSR):

openssl req -new-key server.key -out server.csr

須要輸入剛纔的密碼,國家省份城市域名郵箱等信息

最後就生成了兩個文件

wKioL1h493riOjaUAAOUfSD51hc116.png


在加載SSL支持的Nginx並使用上述私鑰時要除去剛纔設置的口令:

先備份剛纔的csr文件

cp server.keyserver.key.org


去除命令,直接覆蓋了server.key

openssl rsa -inserver.key.org -out server.key


最後標記證書使用上述私鑰和CSR:(把csr標記後轉換成了crt nginx要用keycrt文件)

openssl x509 -req-days 365 -in server.csr -signkey server.key -out server.crt


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']= true
nginx['ssl_certificate']= "/etc/gitlab/ssl/server.crt"
nginx['ssl_certificate_key']= "/etc/gitlab/ssl/server.key"


wKiom1h4-hei5bp2AAKA87WGyqg411.png

wKiom1h5B66yrfVxAAO8-i0DafY556.png

運行gitlab-ctl reconfigure(使配置生效)Nginx的配置變成了:

會自動添加Http80跳轉到443的配置的不用本身寫的。

gitlab-ctlreconfigure命令很是爽的


wKiom1h5CAngDUIbAAR646HgDBc717.png


最後重啓服務

以上所有完成以後, 使用gitlab-ctl restart(來重啓全部服務), 便可使用HTTPS訪問GitLab了,那個證書風險是由於我們的https不是證書機構頒發的。

重啓完成後我們要看下nginx的配置key和crt路徑對否。

下面是效果:


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;


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;

}

wKioL1h5Aafwg8PwAAD00HXUDQw102.png

最後修改/var/opt/gitlab/nginx/conf/nginx.conf配置文件, 在其中加入如下內容, 來載入剛纔的配置文件index.conf(須要把 gzip off 關閉;:

include/var/opt/gitlab/nginx/conf/index.conf;

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  開啓


wKioL1h5A7LS_ZAVAAC1lT97nsA570.png

到這裏今天的https就算完成了。很晚了,2017年1月14日 00:45:39 睡覺啦

相關文章
相關標籤/搜索