GitLab with Let's Encrypt integration
GitLab with Let's Encrypt integration
GitLab이 10.5부터 Let's Encrypt를 자체적으로 지원하기 시작했네.
참고로 2018년 4월 현재 이미 GitLab 버전은 10.6.x임.. 올라간지 좀 됐나본데 ㅋ
아마도 ACMEv2는 안 될지도 모르겠고..
사실상 GitLab 단독으로 쓰는 경우도 크게 많지 않을걸로 보여서..
간단하게 방법만 정리.
ref: https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-gitlab-on-ubuntu-16-04
-
방화벽 정리
일단 방화벽에 http, https를 풀어주자. 외부에서 접속되어야 한다. -
gitlab 설정
/etc/gitlab/gitlab.rb을 열어서 다음과 같이 수정한다.
external_url 'http**s**://yourdomain'
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['sammy@yourdomain.com']
즉, external_url에 https로 바꾸고 도메인을 기록하고, 아래 두 줄을 추가한다.
- gitlab 재시작
sudo gitlab-ctl reconfigure
reconfigure 실행 도중 Let's Encrypt 인증서 발급을 수행한다.
인증서 발급에 실패하면 중단된다.
4. 인증서 갱신
ref: https://docs.gitlab.com/omnibus/settings/ssl.html
crontab -e
0 0 * * * /opt/gitlab/bin/gitlab-ctl renew-le-certs > /dev/null
를 추가하는 형식을 추천하고 있다.
- 인증서 갱신
출처가 된 문서들이 갱신되었다.
gitlab이 11.0 버전 이후부터는 자동 갱신을 지원하기도 하며, DigitalOcean 역시 다른 방법을 추천하고 있다.
- gitlab
ref: https://docs.gitlab.com/omnibus/settings/ssl.html
gitlab 측에서는 특별히 설정하지 않고, gitlab으로 인증서를 발급받았다면 기본적으로 자동 갱신이 이뤄진다고 한다.
물론 설정을 직접 지정할 수도 있다.
letsencrypt['auto_renew'] = false
letsencrypt['auto_renew_hour'] = "12"
letsencrypt['auto_renew_minute'] = "30"
letsencrypt['auto_renew_day_of_month'] = "*/7"
등과 같이. 자동 갱신을 끄거나, 매달 7일 12시 30분에 하도록 하거나.
또한 수동 갱신도 간단하게 할 수 있다.
gitlab-ctl reconfigure
gitlab-ctl renew-le-certs
위 두 명령 중 하나를 수행하면 된다. (root 권한 요구)
- DigitalOcean
DigitalOcean에서는 crontab에 daily 스크립트를 추가 등록하는 방법을 추천하고 있다.
다음과 같은 내용의 /etc/cron.daily/gitlab-le
파일을 생성한다.
#!/bin/bash
set -e
/usr/bin/gitlab-ctl renew-le-certs > /dev/null
그리고 실행 권한을 추가한다.
sudo chmod +x /etc/cron.daily/gitlab-le