이 글은 2년 이상 지난 이야기에요. 읽으실때 참고!
개발
서버 개발 일지

도커(docker)로 SSL 인증서 발급하는 과정.

92 views as of September 14, 2021.
인증서는 직접 인증서를 다루는 사이트가서 사서 적용할 수 있지만 임시 사이트나 영세 업장의 경우에는 Let's Encrypt 의 인증서 정도도 쓸만하다.

개별적으로 도커 명령어로 인증서를 발급할수도 있지만 경우에 따라서 라이브 서버에서 직접적으로 인증서를 발급해야하는경우도 있다.

나같은 경우에는 라이브서비스 중인 서버에서 필요에의해 임의의 타이밍에 도커를 내리고 인증서를 발급받거나, 재갱신 해야하는 작업이 필요했다.

그래서 자연스레 배치 작업쪽으로 도커를 사용하는법을 알아보고 적용하게 되었다.

우선 첫번째로 만들어야할 배치파일은 certbot-certonly.sh 이다.

#!/bin/bash
echo
echo [$(date '+%Y-%m-%d %H:%M:%S') Run certbot-certonly.sh] ====================================
cd ~/docker
docker-compose down
docker run -it --rm --name certbot -p 80:80 -v '/etc/letsencrypt:/etc/letsencrypt' -v '/var/lib/letsencrypt:/var/lib/letsencrypt' \
certbot/certbot certonly --standalone --preferred-challenges http --email your@email.com -d www.domain.com -d domain.com
docker-compose up -d
echo [done] ========================================================================
echo
Copy


위 명령어는 아래와 같은 역할을 진행한다.

1. docker가 돌아가는 폴더로 이동
2. docker 서비스를 중단
3. docker certbot 이미지를통해 SSL을 발급
4. 작업완료후 docker 서비스를 시작

간단한 명령이다. 마찬가지로 갱신역시 위와같은 느낌으로 certbot-renew.sh 파일을 생성한다.

#!/bin/bash
echo
echo [$(date '+%Y-%m-%d %H:%M:%S') Run certbot-renew.sh] ====================================
cd ~/docker
docker-compose down
docker run --rm --name certbot -p 80:80 -p 443:443 -v '/etc/letsencrypt:/etc/letsencrypt' -v '/var/lib/letsencrypt:/var/lib/letsencrypt' \
certbot/certbot renew
docker-compose up -d
echo [done] ========================================================================
echo
Copy


이건 위에보다 간단하다. certbot/certbot renew 명령으로 현재 인증서중 갱신가능한 인증서(1달이내 만료예정)를 재갱신한다.

그럼 이제 제일중요 한거는 사용하는 방법이다.

certbot-certonly.sh 의 경우에는 내가 임의의 타이밍마다 직접 사용하는 경우가 대다수라 아래와 같은 명령어로 터미널에서 바로 실행하면된다. (물론 해당 배치파일이 있는 디렉토리에서요)

$ sh certbot-certonly.sCopy


그러나 재갱신의 경우에는 자동으로 매달 초(1일) 새벽 3시에 자동 실행을 걸어놓고 싶으므로 터미널에서 crontab -e 명령을 통해 파일을 열고 가장 아래에 아래와 같은 구문을 적으면 된다.

# 매월 1일 새벽 3시에 실행, 실행결과를 /home/ubuntu/cert.log 에 기록
0 3 1 * * /home/ubuntu/certbot-renew.sh >> /home/ubuntu/cert.log 2>&1Copy


이후에 실행이 되고나면 cert.log 파일에 위에 실행구문에 적어놓은 echo 구문이 모두 기록으로 남게 되어 확인을 할 수 있다.


인증서 발급
Docker로 간단하게 Let's Encrypt 와일드카드 인증서 발급받기 | LYnLab
이 포스트에서는 Docker를 이용하여 의존성 없이 쉽고 빠르게 인증서를 발급 받는 방법을 설명합니다.
https://lynlab.co.kr/blog/72

인증서 발급 갱신
certbot를 활용한 https 인증서 발급 및 cron 설정
certbot를 활용한 https 인증서 발급 및 cron 설정
certbot.eff.org/docs/ Welcome to the Certbot documentation! — Certbot 1.11.0.dev0 documentation certbot.eff.org AWS ACM 사용해도 되긴 하는데 솔직히 AWS console 세팅이 더 복잡하고 손이 많이 갑니다. greenlock-express은 불안정하고, 무엇보다 프로젝트가 관리가 안되고 있습니다. 다음과 같이 구성할 예정입니다. 1. certbot 설치 실무적인 cerbot 설치 과정은 아래 사이트에서 편하게 확인할 수 있다. certbot.eff.org/lets-encrypt/snap-nginx Certbot - Snap Nginx a project of the Electronic Frontier Found..
https://darrengwon.tistory.com/547

인증서 갱신 크론탭
 Let's Encrypt SSL 인증서 자동 갱신 설정 방법 · Tonic 

https://devlog.jwgo.kr/2019/04/16/how-to-lets-encrypt-ssl-renew/

#개발 #서버 #도커 #docker #SSL #인증서 #certbot
0 개의 댓글
×