let's encrypt로 인증서를 발급하고 만료가 3개월이기 때문에 이에 맞춰 갱신 자동화까지 시도해보도록한다.
* Application:Docker on Ubuntu 20.04 x64
* url : oconnect.kr
Let's encrypt는 CA 업체다. 무료이며 certbot프로그램을 통해 더 간단하게 발급이 가능하다.
1. certbot 도구설치
https://certbot.eff.org/docs/install.html
sudo apt update
sudo apt install letsencrypt vim cron -y
certbot 도구와 도구가 작동하도록 허용되는 모든 종속성을 설치한다.
2. Let 's Encrypt 와일드 카드 SSL 인증서 생성
인증서 생성을 위해 제공되는 몇가지 방법이 있다. 하지만 와일드 카드 SSL 인증서의 경우 허용되는 방법은 preferred-challenges=dns 플래그를 통해 호출되는 DNS 시도이다.
sudo certbot certonly --manual --preferred-challenges=dns --email email@email.ac.kr \
--server https://acme-v02.api.letsencrypt.org/directory --agree-tos -d oconnect.kr -d *.oconnect.kr
명령 호출 후 TXT record가 제공되는데 DNS 공급자 포털, 나는 가비아를 이용한다. 여기에 텍스트 레코드를 추가하고 저장한다. TTL 3600 지정하면 너무 오래걸릴것같아 600을 지정했고, 에러를 발생시켰다.
_acme-challenge.oconnect.kr - check that a DNS record exists for this domain.
도메인 전파에 필요한 충분한 시간을 기다려 줬음에도 해당 에러가 발생했는데 호스트를 @로 줬기 때문이라고 생각된다. _acme-challenge 로 시도해본다.
와일드카드인증서가 생성되었고 인증서가 준비되었는지를 확인하려면 아래 명령으로 확인할 수 있다.
sudo certbot certificates
인증서는 90일간 유효하며 갱신프로세스를 자동화하려면 crontab -e에 갱신 스케쥴을 등록하면 된다.
crontab을 열고
sudo crontab -e
아래를 추가해 저장한다.
1 4 1 * * /usr/bin/certbot renew >> /var/log/letsencrypt/renew.log
(분 시 일 월 요일) => 매월 1일 4시 1분에 갱신하고싶음. 1 4 1 * *
'웹 프로그래밍' 카테고리의 다른 글
Server Error (500) (0) | 2021.09.02 |
---|---|
Docker Error (file not found or excluded by .dockerignore) (0) | 2021.09.01 |
Real-time Django with Channels (0) | 2021.08.15 |
AWS 요금정리 (0) | 2021.07.29 |
Django form에 대한 정리 (0) | 2021.07.25 |