집에서 시놀로지 나스가 돌고 있고 몇 가지 서비스들을 운영중인데 와일드카드 인증서를 발급 받고 자동으로 갱신하는 방법을 작성한다.
사전 준비물
- 개인 도메인 ( 예시: test.com )
- DNS 프로바이더
-- 본인은 클라우드플레어를 사용 함
-- 사용 가능한 프로바이더 목록은 여기 참고
스크립트 설치
시놀로지에서 인증서(Lets's Encrypt) 를 자동으로 발급하고 갱신해주는 스크립트는 아래 레포를 이용한다.
https://github.com/JessThrysoee/synology-letsencrypt
GitHub - JessThrysoee/synology-letsencrypt
Contribute to JessThrysoee/synology-letsencrypt development by creating an account on GitHub.
github.com
curl -sSL https://raw.githubusercontent.com/JessThrysoee/synology-letsencrypt/master/install.sh | bash
클라우드플레어 토큰 발급
나는 DNS 프로바이더로 클라우드플레어를 사용하기 때문에 2개의 정보가 필요했다.
- CF_API_EMAIL: 클라우드플레어 계정 이메일
- CF_DNS_API_TOKEN: DNS 편집 권한이 있는 토큰
CF_DNS_API_TOKEN 대신에 CF_API_KEY를 사용해도 된다.
다만 CF_API_KEY는 모든 권한을 가지고 있기 때문에 어지간하면 필요한 권한만 있는 토큰을 사용하는게 좋다.
https://dash.cloudflare.com/profile/api-tokens 이동 후 토큰 생성
영역 DNS 편집 템플릿 사용
영역 리소스에서 연동하고자 하는 도메인만 선택
토큰 생성 클릭
환경 설정 파일 작성
- 루트 권한으로 작성해야 한다 ( 어차피 스크립트 실행을 루트로 해야하기 때문 )
- DNS 프로바이더로 클라우드 플레어를 사용한다.
- 파일 경로 및 이름 /usr/local/etc/synology-letsencrypt/env
DOMAINS=(--domains "test.com" --domains "*.test.com")
EMAIL="test@gmail.com"
DNS_PROVIDER="cloudflare"
export CLOUDFLARE_EMAIL="test@gmail.com"
export CLOUDFLARE_DNS_API_TOKEN="token_goes_here"
와일드카드 인증서까지 발급 받기 위해 반드시 아스타리스크(*)가 포함 된 도메인도 명시를 해줘야 한다.
발급 및 자동 갱신
스크립트를 초기에 1회 실행하면 발급이 무난하게 완료된다.
/bin/bash /usr/local/bin/synology-letsencrypt.sh
자동 갱신은 작업 스케줄러를 이용하여 주기적으로 위 명령어를 실행해주면 된다.
제어판 - 작업 스케줄러 - 사용자 정의 스크립트
사용자: root
반복: 월간, 마지막, 일요일
실행 명령: /bin/bash /usr/local/bin/synology-letsencrypt.sh