1.개요
도메인을 사전 준비한다.
2. 컨테이너에 certbot 설치하기
# apt install python3
# apt install python3 python3-venv libaugeas0
# python3 -m venv /opt/certbot/
# /opt/certbot/bin/pip install --upgrade pip
# /opt/certbot/bin/pip install certbot certbot-nginx
# ln -s /opt/certbot/bin/certbot /usr/bin/certbot
3. https 등록하기
# vi /etc/nginx/conf.d/default.conf
server_name domain_name; ##<== localhost를 등록한 도메인 이름으로 변경한다.
# certbot --nginx
Please enter the domain name(s) you would like on your certificate ...
도메인을 입력한다.
==> Certificate is saved at: /etc/letsencrypt/live/domain_name/fullchain.pem
==> Key is saved at: /etc/letsencrypt/live/domain_name/privkey.pem
==> This certificate expires 날짜(유료기간이 설정되어 있다)
==> These files will be updated when the certificate renews.
/etc/nginx/conf.d/default.conf 파일에 다음과 같은 설정을 자동으로 해준다.
server {
server_name your_server_name;
...
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/your_server_name/fullchain.pem; # managed by Cert>
ssl_certificate_key /etc/letsencrypt/live/your_server_name/privkey.pem; # managed by Ce>
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = your_server_name) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name your_server_name/;
return 404; # managed by Certbot
}
4. certificate은 3개월 마다 갱신을 하여야 한다.
# certbot renew
See https://certbot.org/renewal-setup for instructions.
정기적으로 자동갱신하도록 하여보자. 다음 명령어를 통하여 오류가 없는지 테스트 하여본다.
# certbot renew --dry-run <-- 실제 갱신은 하지 않지만 오류등의 문제를 서전에 파악할 수 있다.
다음 명령어는 유효기간과 키값의 저장 위치 정보를 알 수 있다.
# certbot certificates
# apt-get install cron <== 프로그램 설치
# crontab -e <== 편집기 실행 (숫자의미: 분(0~59) 시간(0~23) 날짜(1~31) 달(1~12) 요일(0~6)
편집기에서 아래라인을 추가하고 저장한다.
0 3 1 * * /usr/bin/certbot renew
# service cron start
# service cron stop
# service cron status
# service cron restart
[참고] https://gist.github.com/woorim960/dda0bc85599f61a025bb8ac471dfaf7a