네트워크/NAS 시놀로지

Docker로 Let's Encrypt로 와일드카드 인증서 발급 받기

윤창이 2021. 8. 1. 03:06
728x90

[주의] 개인 공부를 위해 쓴 글이기 때문에 주관적인 내용은 물론, 쓰여진 정보가 틀린 것일 수도 있습니다!

피드백 부탁드립니다. (- -)(_ _) 꾸벅

 


https://hub.docker.com/r/certbot/certbot/

 

Docker Hub

 

hub.docker.com

도커 허브에 있는 cerbot을 이용하여 SSL 인증서를 발급 받는다. cerbot은 python뿐만 아니라 네이티브 라이브러리 등의 의존성이 있으므로 몇몇 OS에서는 발급이 불가능한 환경이다. 그러기에 docker를 이용하여 의존성 없이 빠르게 발급 받는 방법이 가장 유망하다. 

 

1. cerbot 이미지를 pull 

$ docker pull certbot/certbot

 

2. cerbot 이미지를 run

docker run -it --rm --name certbot \
  -v '/etc/letsencrypt:/etc/letsencrypt' \
  -v '/var/lib/letsencrypt:/var/lib/letsencrypt' \
  certbot/certbot certonly -d '*.yourdomain.com' --key-type rsa --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory

-v 옵션은 인증서가 저장될 위치를 지정
-d 옵션의 yourdomain.com을 반드시 자신의 도메인으로 바꾼다.
--manual --preferred-challenges 옵션은 dns 방식으로 도메인 소유 인증

--server 발급 요청하는 let's encrypt 주소. 서버 상태는 여기서 확인

 

(23.7 추가) 언제부턴가 key type을 지정하지 않으면 ECC 타입으로 발급되는데, DSM은 ECC 지원하지 않으므로 RSA 타입으로 발급 받아야 함.  --key-type rsa  를 파라미터에 추가하였습니다.

 

 

다음과 같이 TXT record 네임과 키 값이 주어진다.

나는 가비아를 사용 중이므로 아래와 같이 기입

 

기입하고 바로 엔터 누르지말고 DNS 레코드가 적용이 될 때까지 약 1~2분 후에 엔터를 누른다.

 

 

인증서는 /etc/letsencrypt/archive 경로에 저장되어 있다.

scp나 winSCP 등으로 가져와서 적용하면 되겠다.

 

3개월마다 갱신하는게 너무 귀찮은데, 와일드카드 인증서는 renew 명령이 안된다. 추후에 특정 도매인에 대해 인증서를 발급받고 3개월 전에 자동으로 renew 해주는 스크립트를 만들어보자


 

 

728x90