본문 바로가기

Server

Let's Encrypt WildCard SSL 발급 및 적용

출처 - https://svrforum.com/nas/1234158

 

Let's Encrypt WildCard SSL 발급 및 적용

제 synology에 도메인을 3개를 세팅하여 synology 전반적인 도메인용, 단축 url서비스용(혼자쓰긴함.;;), 웹스테이션용 이렇게 세팅해서 사용 중에 있습니다. 그래서 하나의 인증서에 위 3개의 도메인

svrforum.com

 

개인 저장용으로 작성합니다.

 

제 synology에 도메인을 3개를 세팅하여 synology 전반적인 도메인용, 단축 url서비스용(혼자쓰긴함.;;), 웹스테이션용

이렇게 세팅해서 사용 중에 있습니다.

그래서 하나의 인증서에 위 3개의 도메인에 대한 WildCard 인증서를 받아 사용중인대 완벽하지는 않을 수 있으나

1~2년 이상 사용중이나 별 문제 없어 코드 보관겸 작성합니다.

부족한 부분이 있으면 지도 부탁드립니다.😀

 

[준비물]

  1. Cloudflare에 DNS 등록된 도메인
  2. Cloudflare 영역관리 DNS API키

[Cloudflare API키 발급 받기]

  1. https://dash.cloudflare.com/profile/api-tokens 접속
  2. 토큰 생성
  3. 영역 DNS 편집

  아래와 같이 세팅

 

 

특정 도메인만 세팅시

 

모든 도메인 세팅시(전 이걸 사용)

위와 같이 세팅 후 API토큰 생성

생성된 토큰은 1회만 보여지며 다시 확인이 안되니 잘 복사해두시고 분실시 다시 발급 받으셔야 합니다.

그리고 생성된 API코드는 DDNS용 업데이트용으로도 사용가능하며 도메인에 대한 여러 설정이 가능하니

유출 주의 바랍니다.

 

 

[acme.sh 설치]

ssh접속 후 root 권한으로 하시는걸 추천 합니다. (sudo -i)

cd ~
wget https://github.com/acmesh-official/acme.sh/archive/master.tar.gz
tar xvf master.tar.gz
cd acme.sh-master/
./acme.sh --install --nocron --home /usr/local/share/acme.sh --accountemail "이메일주소" --server letsencrypt
source ~/.profile
cd ..
rm -r acme.sh-master
rm -r master.tar.gz
 

 

[인증서 첫 발급 및 연장용 스크립트]

#!/usr/bin/env sh
export CF_Email="이메일주소" # CloudFlare 아이디 (수정)
export CF_Token="AAAAAAAAAAAAAAAAAAAAAAA...." # CloudFlare API 토큰 (수정)
export CERT_FOLDER="$(find /usr/syno/etc/certificate/_archive/ -maxdepth 1 -mindepth 1 -type d)"

export CERT_DNS="dns_cf"
export CERT_DOMAIN="-d domain1.com -d domain2.com -d domain3.com -d *.domain1.com -d *.domain2.com -d *.domain3.com" # 발급받을 도메인 리스트 (수정)
CERT_FILE="$CERT_FOLDER/cert.pem"
KEY_FILE="$CERT_FOLDER/privkey.pem"
FULL_FILE="$CERT_FOLDER/fullchain.pem"
CAPATH_FILE="$CERT_FOLDER/chain.pem"

# 신규 생성 (아래 주석 해지 후 실행)
/usr/local/share/acme.sh/acme.sh --set-default-ca --server letsencrypt
/usr/local/share/acme.sh/acme.sh --issue $CERT_DOMAIN --dns $CERT_DNS --cert-file "$CERT_FILE" --key-file "$KEY_FILE" --fullchain-file "$FULL_FILE" --capath "$CAPATH_FILE" --dnssleep 20 --force

# 업데이트  (아래 주석 해지 후 실행)
#/usr/local/share/acme.sh/acme.sh --cron --home /usr/local/share/acme.sh --force

# Sysnology 계정 설정정
export SYNO_Create=1
export SYNO_Port="5001" #DSM 접속 포트 (수정)
export SYNO_Scheme="https"
export SYNO_Username="root" #DSM 관리자 계정 (수정)
export SYNO_Password="qwertyuiop" #DSM 관리자 패스 (수정)
export SYNO_Certificate=""

# 기본 인증서 배포
/usr/local/share/acme.sh/acme.sh --insecure --deploy $CERT_DOMAIN --deploy-hook synology_dsm

# 서버 다시 시작 (DSM 7.x)
#/usr/syno/bin/synosystemctl reload nginx
sudo systemctl restart nginx
 

위 코드를 편하신 곳에 wSSL.sh와 같이 저장 후 (수정)부분을 각자에 맞게 변경. ssh에서 실행 인증서를 발급 받습니다.

신규 생성 후에는 신규 생성부분을 주석 처리 업데이트 부분을 주석 삭제 후 작업 스케쥴러에 3개월 또는 매월 반복 등으로 등록하시면 지속 적으로 인증서가 업데이트가 가능합니다.

아래 acme.sh의 제가 종정 사용하는 코드를 추가합니다.

 

acme.sh 사이트
https://github.com/acmesh-official/acme.sh/wiki/Synology-NAS-Guide

 

[acme.sh 리스트 확인하기]

/usr/local/share/acme.sh/acme.sh list
 

[acme.sh 버전확인]

/usr/local/share/acme.sh/acme.sh -v
 

[acme.sh 자동 업그레이드 하기]

/usr/local/share/acme.sh/acme.sh --upgrade --auto-upgrade
 

[Synology DSM 업그레이드 후 손상된 환경 수정]

/usr/local/share/acme.sh/acme.sh --force --upgrade --nocron --home /usr/local/share/acme.sh
 

[acme.sh 도메인 삭제]

/usr/local/share/acme.sh/acme.sh --remove -d yourdomain.com
 

[acme.sh 삭제]

/usr/local/share/acme.sh/acme.sh --uninstall
rm -r /usr/local/share/acme.sh
rm -r /root/.acme.sh