개발
백엔드
도커(docker)로 SSL 인증서 발급하는 과정.
133 views as of September 14, 2021.
⚠ 이 글은 2년 이상 지난 이야기에요. 읽으실때 참고!
인증서는 직접 인증서를 다루는 사이트가서 사서 적용할 수 있지만 임시 사이트나 영세 업장의 경우에는 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.s
Copy
그러나 재갱신의 경우에는 자동으로 매달 초(1일) 새벽 3시에 자동 실행을 걸어놓고 싶으므로 터미널에서 crontab -e 명령을 통해 파일을 열고 가장 아래에 아래와 같은 구문을 적으면 된다.
# 매월 1일 새벽 3시에 실행, 실행결과를 /home/ubuntu/cert.log 에 기록
0 3 1 * * /home/ubuntu/certbot-renew.sh >> /home/ubuntu/cert.log 2>&1
Copy
이후에 실행이 되고나면
cert.log
파일에 위에 실행구문에 적어놓은 echo
구문이 모두 기록으로 남게 되어 확인을 할 수 있다.인증서 발급
Docker로 간단하게 Let's Encrypt 와일드카드 인증서 발급받기 | LYnLab
이 포스트에서는 Docker를 이용하여 의존성 없이 쉽고 빠르게 인증서를 발급 받는 방법을 설명합니다.
https://lynlab.co.kr/blog/72
인증서 발급 갱신
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
0
개의 댓글
백엔드 콜렉션의 다른 글
개발 카테고리의 다른 글
12/07/2021
라라벨 PHPStorm 로컬 서버 환경 설정 값
PHPStorm에서 직접 로컬서버로 라라벨을 돌릴때 서버 환경 파라미터 설정에 넣어줘야 하는 값. PHP 서버 인터프리터 옵션에 넣어...
07/22/2021
AWS pem 키 없이 FTP 접속 가능하도록 설정하는 방법
뭐 이러면 안되지만 꼭 루트유저가 아닌 일반 유저로써 AWS EC2 인스턴스에 접속하게 하기위한 계정생성이 필요할때 아래와 같이...
02/25/2021
es5만 지원되는 ie같은 브라우저에 es6 쓰는 방법, 바벨(babeljs)
es5만 지원하는 더러운 ie 같은 브라우저가 있다.ie11은 es2015까지만 지원해줘서 remove()나 parameter default 같은 es6의 기...