::: IT인터넷 :::

시놀로지 NAS의 GitLab 인증서 자동 갱신하기

곰탱이푸우 2021. 6. 10. 17:36

시놀로지 NAS에 GitLab을 셋팅하고 Let's Encrypt 인증서로 SSL 설정까지 마쳤다면 문제가 하나 있다.

  • Let's Encrypt 인증서의 유효 기간이 90일로 너무 짧다. (유료 인증서의 경우 1년~10년까지 가능)
  • 시놀로지 NAS가 자동으로 갱신해 준 인증서를 매번 일정에 맞춰서 재설정하기는 번거롭다.

 

가장 좋은 방법은 시놀로지 NAS의 자동 스케줄러 기능을 통해 인증서 갱신을 자동화 하는 것이다.

실제 Let's Encrypt의 권고 사항이기도 하다.

 

본문은 아래 내용을 참고하여 작성하였다.

 

zxc010613/synology-gitlab-ssl/automatic_renewal

When you want to use an encryption certificate generated by the Synology DSM. - zxc010613/synology-gitlab-ssl

github.com

 

 

인증서 자동 갱신

GitLab에 인증서 적용하는 방법은 아래 포스팅을 참고한다.

 

시놀로지 NAS에서 Let's Encrypt 인증서를 자동 갱신하지만, GitLab에 자동 적용되지는 않는다.

따라서 아래와 같은 스크립트를 이용해야 한다.

 

시놀로지 NAS에 스케줄러 추가

제어판 → 시스템 → 작업 스케줄러 로 이동한다.

 

생성 버튼 우측의 화살표를 클릭하고 예약된 작업 → 사용자 정의 스크립트를 선택한다.

 

일반 탭에서 '작업' 부분에 스크립트의 이름을 지정한다. (ex. GitLab-Cert-Copy)

 

 

인증서 자동 갱신 코드 적용

작업 설정 탭을 선택하고 사용자 정의 스크립트 부분에 아래 코드를 추가한다.

#VARIABLES
ID=""

#/usr/syno/bin/synopkg stop Docker-GitLab

# 시놀로지 NAS의 인증서 저장 경로
cd /usr/syno/etc/certificate/_archive/${ID}  
SYNOLOGY_CERT=$(sudo openssl x509 -checkend 0 -in fullchain.pem)

# GITLAB 컨테이너와 공유한 볼륨 폴더 경로
GITLAB_CERT=$(openssl x509 -checkend 0 -in /volume1/docker/gitlab/gitlab/certs/gitlab.crt) 

echo "synology cert status: ${SYNOLOGY_CERT}"
echo "gitLab cert status: ${GITLAB_CERT}"

# GitLab에 적용 된 인증서와 시놀로지 NAS의 인증서가 다른 경우 
if [ "${SYNOLOGY_CERT}" != "${GITLAB_CERT}" ]
then
echo "Action Required"

# 갱신 된 시놀로지 NAS의 인증서를 GitLab의 인증서로 변환
sudo \cp -f privkey.pem /volume1/docker/gitlab/gitlab/certs/gitlab.key;
sudo \cp -f fullchain.pem /volume1/docker/gitlab/gitlab/certs/gitlab.crt;

# GitLab 컨테이너 재시작
echo "GitLab restarting.."
/usr/syno/bin/synopkg restart Docker-GitLab

# GitLab에 적용 된 인증서와 시놀로지 NAS의 인증서가 동일한 경우
else
echo "no action required."
fi
echo "done."

 

ID 부분의 값을 입력해야 하는데 아래 포스팅의 시놀로지에 저장 된 인증서 확인 부분을 참고한다.

해당 경로에서 확인되는 인증서 경로의 폴더명 (6자리 문자열)을 넣어준다.

 

시놀로지 NAS에서 GitLab 설정 방법

개요 시놀로지 NAS에서 GitLab도 설치 가능하며, DS21x 모델 기준으로 DS216 부터 추가되었다. 아마도 Docker를 DS216부터 지원하기 시작했기 때문으로 보인다. 기존에 사용하던 DS213은 Git Server 설치가 가

www.bearpooh.com

 

 

실행 주기 설정

위의 스크립트가 실행 될 주기를 설정한다.

인증서 갱신 주기에 맞춰서 설정해도 되지만, 계산하기 귀찮아서 하루에 1번씩 새벽 4시에 실행되도록 설정했다.

 

스크립트의 조건문에 따라 시놀로지 NAS의 인증서가 갱신되면 GitLab 인증서도 새로운 인증서로 변경된다.

 

위의 방법을 응용하면 NAS에 Docker로 실행 중인 다른 서비스에도 적용할 수 있을 것으로 판단된다.

물론 스크립트 코드 수정은 약간 해야 한다.