렛츠엔크립트는 무료가 최대 장점이지만 3개월마다 갱신을 해줘야 하고, 와일드카드 도메인 인증이 안되어 서브도메인도 하나하나 갱신을 해줘야 하는 불편이 있다.
원래 시놀로지는 자동갱신을 해주는데 종종 자동갱신이 안되고, 이번에 보니 또 갱신이 안됐다. 수동갱신을 하려고 했는데 설정도 맞고 방화벽도 끄고 보안 수준을 0로 떨어뜨려 했는데 수동갱신조차 안된다.
열받는 건 어떤 도메인은 되는데 어떤 건 안된다는 거. 헐...
찾아보니 나처럼 온갖 짓을 해도 안돼서 개고생한 글도 보이고, 또 계속 열심히 검색했더니 레츠앤크립트 와일드카드 인증서 발급받는 법이라는 게시글이 있다.
서브도메인별로 인증서를 발급받았더니 도대체가 인증서 창이 엉망이라서 그간 스트레스였는데 이게 잘 되면 일거양득이다.
해봤더니 잘된다. 수십개가 난립하던 서브도메인을 다 지우고, 인증서 자동 갱신 스크립트도 거의 완성했다.
잘 정리해주신 아래 블로거님은 은인이라 불릴만 하다.
1. 직접 생성 방식 - 자동갱신안됨
전체적인 흐름은
1. 스크립트 설치
2. 명령어 실행 - 출력되는 도메인 txt 확인 후 도메인 서비스에서 txt레코드 입력
3. 도메인 txt 등록 후(대략 2~3시간 걸릴 수 있음) 인증서 발급
4. 인증서를 시놀로지가 관리하는 인증서 폴더로 복사
순이다.
/var/services/homes/사용자 이름/acme.sh --set-default-ca --server letsencrypt
/var/services/homes/사용자 이름/acme.sh --issue --dns --force -d 내 도메인 -d *.내 도메인 --yes-I-know-dns-manual-mode-enough-go-ahead-please --server letsencrypt
도메인 txt 설정
/var/services/homes/사용자 이름/acme.sh --renew --dns --force -d 내 도메인 -d *.내 도메인 --yes-I-know-dns-manual-mode-enough-go-ahead-please --server letsencrypt
---
20250313 문제점. 스크립트를 통한 자동갱신이 안된다. 일단 스크립트가 실행되면 여러가지 사유로 txt 값이 변경되는데 이걸 또 하나하나 dns txt 값에 넣어줘야 한다.
일단 도메인 몇개는 클라우드플레어로 이전해볼 계획.
---
2. 클라우드플레어 API 갱신 방식 - 자동갱신가능
https://siane.tistory.com/267
dnszi 를 버리고 클라우드플레어로 이전했다. 많은 사람들이 추천하는 서비스인만큼 좀 안정적인듯.
다만, 클라우드플레어 dns a 레코드 설정에서 프록시 접속 방식은 시놀로지 웹스테이션에서 인식을 못하는 문제가 있다.
ip가 노출되지 않는 장점이 있으나, 클라우드플레어를 거쳐 들어오면서 뭔가 주소 변경이 발생하고 웹스테이션이 인지를 못하는 듯.
프록시가 느려지는 문제도 있다 하니 일단 끄기로 한다.
20250520 추가) 새로 추가한 다른 사이트는 프록시 켰는데도 된다. 확인해보니 ssl 설정으로 인해서 시놀로지의 웹스테이션 도메인네임 인식에 문제가 생긴다는 취지
Cloudflare > SSL/TLS > 구성 > 사용자 지정 SSL/TLS > 전체
로 했더니 갑자기 된다. 정말 이 문제 때문인지는 알 수 없다. 아무튼 되니까 좋다. ㅎㅎ
그외 인증서 갱신 명령이 동작하지 않는다. 그냥 바로 갱신된 인증서 복사하는 걸로 진행 예정.
가. 네임서버를 클라우드플레어로 변경해서 도메인 관리권한 이전
나. 클라우드플레어 dns 편집 api 키 발급
https://dash.cloudflare.com/profile/api-tokens
다. acme.sh 설치
$ 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 "이메일"
$ source ~/.profile
라. 환경변수 설정
export CF_Email="이메일" #클라우드 플레어 계정의 이메일
export CF_Token="위에서 생성한 API 토큰"
#아래 내용은 권한을 더욱더 제한하고 싶을 때 넣습니다.
export CF_Account_ID="계정ID"
export CF_Zone_ID="영역ID"
마. 인증서 생성
$ cd /usr/local/share/acme.sh
$ export CERT_DNS="dns_cf"
$ ./acme.sh --issue --home . -d '내 도메인' -d '*.내 도메인' --dns "$CERT_DNS"
바. 생성된 인증서 폴더에서 시놀로지 관리 인증서 폴더로 복사
폴더 이름이 코드화 되어 있어 폴더이름을 하나하나 찾아야 하는 문제가 있다.
/bin/cp /usr/local/share/acme.sh/도메인_ecc/도메인.cer /usr/syno/etc/certificate/_archive/인증서폴더코드/cert.pem
/bin/cp /usr/local/share/acme.sh/도메인_ecc/ca.cer /usr/syno/etc/certificate/_archive/인증서폴더코드/chain.pem
/bin/cp /usr/local/share/acme.sh/도메인_ecc/fullchain.cer /usr/syno/etc/certificate/_archive/인증서폴더코드/fullchain.pem
/bin/cp /usr/local/share/acme.sh/도메인_ecc/도메인.key /usr/syno/etc/certificate/_archive/인증서폴더코드/privkey.pem