이 글은 2년 이상 지난 이야기에요. 읽으실때 참고!
개발
서버 개발 일지
도커(docker)로 SSL 인증서 발급하는 과정.
34 views as of September 14, 2021.
인증서는 직접 인증서를 다루는 사이트가서 사서 적용할 수 있지만 임시 사이트나 영세 업장의 경우에는 Let's Encrypt 의 인증서 정도도 쓸만하다.

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

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

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

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

1
2
3
4
5
6
7
8
9
10
#!/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
cs

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

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

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

1
2
3
4
5
6
7
8
9
10
#!/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
cs

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

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

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

1
2
$ sh certbot-certonly.sh
 
cs

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

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

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


인증서 발급 갱신: https://darrengwon.tistory.com/547
×