XX아~ 열심히 하지마~. 잘하란 말야~

Synology NAS에 와일드카드 SSL 인증서 설치 본문

Blog/IT

Synology NAS에 와일드카드 SSL 인증서 설치

IamwhatIam 2021. 12. 8. 19:23

Synology NAS 920+ 를 Main으로 사용하고 있다.

도메인을 구매해서 여러가지 서비스를 설정해서 사용하는데 https 접속시 인증서 문제를 해결해야만 했다.

돈주고 구매하면 편할거 같은데 지금 현재 사용하고 있는 Internet 회선은 Port 대부분이 막혀서 인증서 발급시 이메일이나 https를

통해서 발급인증 받는 것도 쉽지 않았다.

예전에 사용하던 Let's Encrypt 인증서가 만료 되고 나서 무슨 문제인지 갱신할 수 없었는데... 다시금 해보니 정상적으로 등록이 되서

메모 차원에서 Blog에 글을 남겨 놓는다.

 

1. NAS에 SSH 접속을 해서 acme.sh Script를 설치 한다.

wget https://raw.githubusercontent.com/acmesh-official/acme.sh/master/acme.sh

나의 경우에는 home 아래 SSL이라는 폴더를 생성해서 작업을 했다.

작업시 계정 권한문제가 있을 수 있으니 root 권한으로 작업을 하기 바란다.

sudo -i

 

2. Download 받은 Script 권한 설정

sudo chmod a+x acme.sh

 

3. 기본 CA를 Let's Encrypt로 변경

./acme.sh --set-default-ca  --server letsencrypt

 

4. 인증서 발급

./acme.sh --issue --dns --force -d [mydomain.co.kr] -d *.[mydomain.co.kr] --yes-I-know-dns-manual-mode-enough-go-ahead-please --server letsencrypt

위의 Capture와 같이 출력된다.

위의 내용 중 2개의 TXT value(blur처리된 부분)에 해당 하는 값을 DNS설정에서 TXT값으로 설정을 해줘야 한다.

나의 경우엔 가비아를 사용하기 때문에 가비아 DNS설정에서 레코드값을 추가 하였다.

 

5. DNS 설정 확인

위에서 설정한 TXT값이 제대로 설정이 되어 DNS 배포까지 이루어졌는지 확인을 한다.

nslookup
> set type=txt
> _acme-challenge.[mydomain.co.kr]

레코드 설정을 하고 나서 다소 시간이 걸린다.

정상적으로 DNS설정 값이 배포가 되고 나면 위의 사진 처럼 nslookup 값이 출력될 것이다.

구글에서 확인을 하려면 Dig(DNS 조회)에서 확인 할 수 있다.

 

6. TXT Record 확인 후 인증서 갱신(재발급)

root 권한으로 해야 한다.

sudo su
./acme.sh --renew --dns --force -d [mydomain.co.kr] -d *.[mydomain.co.kr] --yes-I-know-dns-manual-mode-enough-go-ahead-please --server letsencrypt

 

7. 발급된 인증서를 Synology NAS DSM에 추가

위의 Capture에서 녹색으로 보이는 파일을 PC로 Download 한다.

DSM에 접속해서 [제어판] - [보안] - [인증서] - [추가] 에서 인증서를 추가한다.

개인키 : [mydomain.co.kr].key

인증서 : [mydomain.co.kr].cer

중간 인증서 : ca.cer

기본인증서로 변경하면 적용은 끝났다.

 

8. 신규 추가한 인증서 path 확인

제어판에서 추가된 인증서는 [/usr/syno/etc/cetificate/_archive] 밑에 랜덤한 디렉토리를 생성해서 옮겨지게 된다.

작업 스케쥴러를 통한 인증서 갱신을 위해 해당 디렉토리의 확인이 필요하다.

cat /usr/syno/etc/certificate/_archive/DEFAULT

해당 Path는 앞서 등록한 인증서를 삭제하기 전까지만 유효하다. 만약 변경하거나 삭제를 하면 재확인이 필요하다.

 

9. 작업 Scheduler 등록

인증서의 기간이 영원한 것이 아니기 때문에 정기적인 갱신이 필요하다.

Let's Encrypt의 경우엔 3개월이 유효기간이다.

이 글을 쓰는 시점이 2021년 12월 8일이고 해당 인증서의 사용만료를 확인하니 2022년 3월 8일까지 이다.

위의 Capture와 같이 작업스케줄러를 등록해서 정기적으로 인증서를 재발급 받도록 한다.

[제어판] - [작업 스케줄러] - [생성] - [예약된 작업] - [사용자 정의 스크립트] 

위와 같이 설정한다.

사용자 정의 스크립트는 아래의 스크립트를 사용하면 된다.

# CA Update
/var/services/homes/LimMinGue/Documents/SSL/acme.sh --renew --dns --force -d [mydomain.co.kr] -d *.[mydomain.co.kr] --yes-I-know-dns-manual-mode-enough-go-ahead-please --server letsencrypt

# Move File
/bin/cp /root/.acme.sh/[mydomain.co.kr]/[mydomain.co.kr].cer /usr/syno/etc/certificate/_archive/9egXRX/cert.pem
/bin/cp /root/.acme.sh/[mydomain.co.kr]/ca.cer /usr/syno/etc/certificate/_archive/9egXRX/chain.pem
/bin/cp /root/.acme.sh/[mydomain.co.kr]/fullchain.cer /usr/syno/etc/certificate/_archive/9egXRX/fullchain.pem
/bin/cp /root/.acme.sh/[mydomain.co.kr]/[mydomain.co.kr].key /usr/syno/etc/certificate/_archive/9egXRX/privkey.pem

# nginx Restart
##/usr/syno/sbin/synoservicectl --reload nginx -->변경되었다.
/usr/syno/bin/synosystemctl restart nginx

 파일의 경로는 6번에서 확인된 경로를 사용하면 된다.