Synology DSM에서  acme.sh 와 Cloudflare DNS로 Let’s Encrypt 무료 SSL 인증서를 발급하고 자동 갱신하는 구성을 나타난 대표 이미지

개요

DSM을 외부에서 직접 노출하는 방식은 위험하므로 Tailscale, OpenVPN, WireGuard 같은 VPN 사용을 권장한다.

외부 접근을 차단하고 도메인을 사설 IP로 매칭한 환경에서는 HTTP 인증 방식으로 무료 인증서 등록이 어렵다.

이 글은 Synology NAS(DSM)에서 **acme.sh로 Let’s Encrypt 무료 SSL 인증서를 발급하고 DSM에 자동 설치하는 방법**을 정리한다.


준비 사항

  • 도메인: 예) plzhans.com
  • DNS: Cloudflare 사용(권장)
  • DSM 자동 설치용 계정(2FA 없는 계정 필요, 아래 참고)

Cloudflare API 토큰 발급(최소 권한)

보안을 위해 특정 도메인에 최소 권한만 부여한 토큰을 만든다.

최소 필수 권한

  • DNS: Read, Edit
  • Zone: Read

Cloudflare에서 DNS Read·Edit과 Zone Read 최소 권한만 부여해 API 토큰을 만드는 화면


인증서 발급(acme.sh)

테스트 서버로 먼저 확인

운영(Production) 서버로 반복 요청하면 차단될 수 있다. 성공 사이클을 만들 때까지는 테스트 서버를 사용한다.

  • --server letsencrypt_test
  • 발급에는 --issue 옵션이 필요하다
 1#!/bin/bash
 2
 3export CF_Token="cloudflare_api_token"
 4
 5acme.sh \
 6  --server letsencrypt_test \
 7  --log --debug \
 8  --home ~/ssl \
 9  --issue \
10  --dns dns_cf \
11  -d "plzhans.com" \
12  -d "*.plzhans.com"

실제(운영) 발급

1acme.sh \
2  --server letsencrypt \
3  --log --debug \
4  --home ~/ssl \
5  --issue \
6  --dns dns_cf \
7  -d "plzhans.com" \
8  -d "*.plzhans.com"

발급 확인

1acme.sh \
2  --home ~/scripts/ssl \
3  --list
4
5# execute result
6# Main_Domain	KeyLength	SAN_Domains	CA	Created	Renew
7# plzhans.com	"ec-256"	*.plzhans.com	LetsEncrypt.org	2026-05-15T04:59:58Z	2026-07-13T04:59:58Z

참고

  • 사용한 토큰 정보는 account.conf 파일에 저장된다
  • 도메인 설정은 예) ~/ssl/plzhans.com_ecc/plzhans.com.conf 에 저장된다

발급한 인증서 DSM에 설치(deploy-hook)

acme.sh는 deploy-hook으로 synology_dsm을 지원한다.

  • DSM에 인증서가 없는 경우 SYNO_Create="1" 값이 있어야 생성된다
  • 테스트 인증서가 이미 발급돼 있으면 삭제하거나 --force 옵션이 필요할 수 있다

기존 인증서 삭제(필요 시)

1acme.sh --remove --home ~/ssl -d "plzhans.com"

DSM 자동 설치 스크립트 예시

 1#!/bin/bash
 2
 3# syno server
 4export SYNO_Hostname="localhost"
 5export SYNO_Scheme="https"
 6export SYNO_Port="5001"
 7
 8# syno account
 9export SYNO_Username='system-script'
10export SYNO_Password='secret'
11
12export SYNO_Create="1"
13
14acme.sh \
15  --deploy \
16  --insecure \
17  --home ~/ssl \
18  --log --debug \
19  --deploy-hook synology_dsm \
20  -d "plzhans.com"
21
22# execute result
23# ...
24# ret='0'
25# Success

문제 발생: 2FA로 자동화가 막히는 경우

SYNO_Username 계정에 2FA가 적용돼 있으면 자동화에 방해된다.

해결책

  • 별도의 계정을 생성한다(관리자 계정 필요)
  • 자동화용 최소 보안 조치로 운영한다
    • 외부 접근 불가
    • 필요한 권한만 부여
  • 해당 계정은 2FA 비활성화

DSM 확인

DSM 사용자 설정에서 자동화용 계정의 2FA가 비활성화된 것을 확인하는 화면


FAQ: Hostname/인증서 매칭 문제

외부 접속이 차단돼 대표 도메인으로 접근이 불가한 경우(예: wee-home.synology.me) 인증서 매칭 실패로 오류가 날 수 있다. 명령이 동작할 때 https://{Hostname}:{port}로 접근하기 때문이다.

해결책 3가지 중 하나 선택

  1. SYNO_Hostname을 실제 접근 가능한 정상 인증서 도메인으로 명시한다
  2. /etc/hosts 파일에서 도메인을 명시해 DNS 질의를 우회하고 127.0.0.1로 연결한다
  3. http 방식을 사용한다

참고