DevOps/CICD

GitLab Server SSL 적용 (매우 쉬움)

돌돌김 2021. 1. 14. 19:05

기존 깃랩 서버는 Azure VM에 설치해서 사용중이었다. 도메인도 할당받지 않고 ip주소로 접근하여 사용중이었다.

실제 운영을 위해서는 도메인도 필요하고, 이제는 거의 필수가 된 https적용도 필요하다. 예전에 Tomcat에 Let's encrypt를 사용해서 SSL을 적용했던 경험을 토대로 nginx를 앞단에 두고 적용하려고 했다.

 

하지만, nginx의 기본 포트인 80번을 이미 GitLab에서 사용중이었다.
이를 해결하기 위해 Gitlab의 기본 포트를 변경해볼까 하며 docs를 찾아보던 중 GitLab 자체적으로 ssl 적용을 제공하는 것을 찾았다.

SSL Configuration | GitLab

SSL Configuration | GitLab

SSL Configuration Available SSL Configuration Tasks Omnibus-GitLab supports several common use cases for SSL configuration. Allow https connections to GitLab instance services Configure public certificate bundles for external resource connections Host Serv

docs.gitlab.com

 

 

우선, 깃랩 서버가 VM에 설치가 되어있다는 가정이다.

Gitlab은 자체적으로 nginx를 사용하고, letsencrypt를 지원하여 https 적용을 가능하게 한다.

외부에서 http, https 접근이 가능하도록 80번 포트와 443번 포트를 개방해주자

 

 

Azure VM Spec

  • OS : Linux (ubuntu 18.04-LTS)
  • 크기 : 표준 D2s v3
  • CPU : vCPU 2대
  • RAM : 8GB

이후, 도메인을 할당받아야 하는데 웹 호스팅 업체(e.g. 가비아, cafe24)에서 도메인을 하나 할당받는다. 이 부분을 다룬 글들은 많기 때문에 패스한다.

 

도메인을 할당받아 해당 주소로 접속하면 접속은 되지만, SSL적용이 안되어서 주의요함 표시가 나타날 것이다.

 

 

 

 

https 적용 및 자동갱신

 

/etc/gitlab/gitlab.rb 파일에서 Let's encrypt 적용이 가능하다. 아래의 내용을 추가해준다.(sudo 권한으로 편집한다)

  letsencrypt['enable'] = true                      # GitLab 10.5 and 10.6 require this option
  external_url "https://gitlab.example.com"         # Must use https protocol
  letsencrypt['contact_emails'] = ['foo@email.com'] # Optional
  • external_url에 할당받은 도메인 주소를 입력한다. 단, http가 아닌 https로 적어줘야 한다.

Letsencrypt는 90일이 지나면 갱신을 해줘야 한다. cron-tab으로 자동갱신을 할 수 있지만, Gitlab 자체적으로도 갱신이 가능하다

  letsencrypt['auto_renew_hour'] = "12"
  letsencrypt['auto_renew_minute'] = "30"
  letsencrypt['auto_renew_day_of_month'] = "*/7"

 

 

작성이 완료되면 설정사항을 적용 후 재시작한다.

    sudo gitlab-ctl reconfigure

아주 빠른 속도로 탭이 내려가며 중간중간 KEY 값도 보이고 무엇인가 설치되고 있는게 보일 것이다. 

별 오류가 없이 계속 진행될 것이다.

 

 

정상적으로 적용이 되었다면 /etc/gitlab 밑에 아래와 같은 폴더가 생겼을 것이다. 여기에 ssl 관련 정보들이 다 있다.

  myserver@gitlab-server-ee:/etc/gitlab$ ll
  total 152
  drwxrwxr-x   4 root root   4096 Jan 14 09:07 ./
  drwxr-xr-x 100 root root   4096 Jan 14 08:51 ../
  -rw-------   1 root root  18976 Jan 14 09:07 gitlab-secrets.json
  -rw-------   1 root root 116673 Jan 14 09:07 gitlab.rb
  drwxr-xr-x   2 root root   4096 Jan 14 08:58 ssl/
  drwxr-xr-x   2 root root   4096 Dec  7 06:16 trusted-certs/

 

 

1~2분 정도 지난 뒤 https로 접속해보면 잘 적용되어 있을 것이다. 

물론 Repository clone 하는 부분에도 https가 적용된 것을 볼 수 있다.