본문 바로가기

Dev./설치&세팅

시놀로지 NAS, Let's Encrypt WildCard SSL 적용

2020-03-01. 하기 방법은 Manual DNS 방법일 시 schedule auto renew가 적용안됩니다.
-> renew 시점에 dns txt 값이 변경되서 validation이 진행안됨.
-> cloudflare로 nameserver를 변경하여 다시 설정함


DSM 6.2 및 DNSZi의 dns txt 이용한 시놀로지 나스 Let's Encrypt  와일드카드 SSL 인증서 적용 case입니다.

 

1. acme.sh 사용 이유

- Let's Encrypt Wildcard SSL는 DNS-01 챌린지를 통해서 증명함

- certbot을 이용한 Wildcard SSL은 manual로 발급하는 과정 중 dns challenge를 증명하는 단계가 포함됨. 이때 dns text key/value의 배포 및 확인까지 텀이 생기게 되고 인증서 발급 과정 중 앞서 말한 텀을 대기하는 과정이 포함됨.

따라서 cron 등 schedule을 통한 renew가 불가능하여 갱신 시점에 manual로 재발급해야함.

- 따라서 certbot으로 발급하는 Wildcard SSL은 귀찮음.

 

Process Summary

  1. acme.sh를 이용하여 인증서 발급 등록

  2. DNS text key 등록

  3. acme.sh로 인증서 갱신 발급

  4. 스케줄 등록

 

- acme.sh를 이용한 wildcard ssl 발급 방법은 크게 위 4단계로 이루어진다.

- 시놀로지 나스의 스케줄 중 root 권한으로 스케쥴링할 예정이므로 추가 작업이 필요

 

Part1. acme.sh 설치 및 dns txt 세팅

1. Nas 사용자 계정으로 ssh 접속

2. acme.sh 설치

wget https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh

3. 실행 권한 부여

chmod a+x acme.sh

4. Wildcard SSL 인증서 발급 과정 진행

/var/services/homes/[사용자계정명]/acme.sh --issue --dns --force -d 도메인명 -d *.도메인명 --yes-I-know-dns-manual-mode-enough-go-ahead-please

5. 설치 과정 중간에 나오는 DNS txt key/value를 DNSZi 등 dns 관리 사이트의 TXT 레코드에 등록

Domain: '_acme-challenge.도메인명'

TXT value: '랜덤키값'

 

* 적용 확인 nslookup  > set type=txt > _acme-challenge. 도메인명으로 txt 키값이 뜨면 배포 완료

* 이후 인증서 발급은 다음 command로 가능하나, 시놀로지 스케줄에 등록할 것이므로 패스.

acme.sh --renew --dns --force -d 도메인명 -d *.도메인명 --yes-I-know-dns-manual-mode-enough-go-ahead-please

 

 

Part2. root 계정으로 작업 스케줄러 등록

* DSM - 제어판 - 작업 스케줄러 - 사용자 정의 스크립트 root 계정으로 진행한다

 

1. 실행

/var/services/homes/[사용자계정명]/acme.sh --issue --dns --force -d 도메인명 -d *.도메인명 --yes-I-know-dns-manual-mode-enough-go-ahead-please

 

2. 스케쥴 변경 및 저장

/var/services/homes/[사용자계정명]/acme.sh --renew --dns --force -d 도메인명 -d *.도메인명 --yes-I-know-dns-manual-mode-enough-go-ahead-please 


/bin/cp /root/.acme.sh/도메인명/도메인명.cer /usr/syno/etc/certificate/system/default/cert.pem 
/bin/cp /root/.acme.sh/도메인명/ca.cer /usr/syno/etc/certificate/system/default/chain.pem 
/bin/cp /root/.acme.sh/도메인명/fullchain.cer /usr/syno/etc/certificate/system/default/fullchain.pem 
/bin/cp /root/.acme.sh/도메인명/도메인명.key /usr/syno/etc/certificate/system/default/privkey.pem 

/usr/syno/sbin/synoservicectl --reload nginx

 

-----------------

 

1. 사용자 계정으로 dns key 값을 등록하고 나중에 root 계정으로 스케쥴링 작업하면서 issue, renew 하는데 처음부터 root 계정으로 진행하면 어떻게 될까?

2. acme.sh로 let's encrypt wildcard ssl 인증서 발급 및 갱신까진 확인함.

3. 작업스케쥴로 DSM에서 와일드카드 인증서 적용 확인 함.

 

 

 

 

참고 : https://github.com/Neilpang/acme.sh

 

Neilpang/acme.sh

A pure Unix shell script implementing ACME client protocol - Neilpang/acme.sh

github.com

참고 : https://vdr.one/how-to-create-a-lets-encrypt-wildcard-certificate-on-a-synology-nas/

 

How to create a Let’s Encrypt wildcard certificate on a Synology NAS

I love the Let’s Encrypt functionality on the Synology but the built-in solution will not allow you to create a wildcard certificate. From a security standpoint a good way to do certificates with S…

vdr.one

참고 : https://m.blog.naver.com/clove7802/221703655436

 

시놀로지 나스 Let's Encrypt SSL 와일드카드 인증서 발급/자동재발급 하기

이 글은 DSM 6.2환경에서 작성되었으며 클라우드플레어 ddns사용을 전제로 작성되었습니다. 원문을 확인...

blog.naver.com

 

'Dev. > 설치&세팅' 카테고리의 다른 글

WSL Ubuntu Sudo 권한 허용 및 서비스 자동 시작  (0) 2020.04.08
시놀로지 NAS, Let's Encrypt WildCard SSL 적용  (2) 2019.12.16
이클립스/STS IPv4 출력  (0) 2018.03.06
JAR Library Download & Maven dependency  (0) 2014.10.31
jQuery 다운로드  (0) 2014.10.22
STS 설치 등  (0) 2014.10.13
  • 덕분에 잘 적용하긴 했는데 제대로 됐는지 모르겠네요. 감사합니다.

    • 위 글은 acme.sh의 DNS manual mode 를 설명하고 있습니다.
      해당 과정 중 DNS TXT Record값을 수동으로 등록하는 과정이 진행되는데,
      인증서 갱신시점에 DNS TXT Record verifing 부분에서 오류가 발생합니다.

      따라서 DNS TXT Record API를 지원하는 Cloudflare 등 DNS 서비스를 이용하시거나
      또는 CNAME Alias를 이용해서 인증서 발급/갱신을 하심이 좋을듯 합니다.


      # acme.sh의 Cloudflare DNS를 이용, 인증서 발급/갱신하는 방법(https://github.com/acmesh-official/acme.sh/wiki/dnsapi#1-cloudflare-option)
      # CNAME alias를 이용하는 방법(https://ckhacker.tistory.com/81)