let's encrypt 자동갱신

hoho kim·2021년 6월 14일
0

certbot 설치 과정은 생략

발급방법

webroot 방식으로 도메인 소유권에 대해서 인증을 받고 발급 받는 방법을 선택.

nginx 설정

server {
        listen 80;
        server_name yourdomain.com www.yourdomain.com;
        
        location ^~ /.well-known/acme-challenge/ {
                default_type "text/plain";
                root /var/www/letsencrypt;
        }
}

위와 같이 도메인 루트에 대한 액세스를 제공하고 이 경로를 파라메너로 넘긴다.
/var/www/letsencrypt 경로를 생성해 놓지 않으면 에러 발생

sudo certbot certonly --webroot -w /var/www/letsencrypt -d www.mydomain.io -d api.mydomain.io

발급 받은 후 nginx 다시 셋팅

server {
        listen 80;
        server_name mydomain.io www.mydomain.io;

        location ^~ /.well-known/acme-challenge/ {
                default_type "text/plain";
                root /var/www/letsencrypt;
        }
        location / {
                return 301 https://www.mydomain.io;
        }
}

server {

        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;
        ...
        
        server_name www.mydomain.io;
        ssl_certificate /etc/letsencrypt/live/www.mydomain.io/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/www.mydomain.io/privkey.pem;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ...
}
        

자동갱신

sudo crontab -e
# utc+0기준으로 18시는 우리나라 시간으로 새벽 3시 / 마지막 숫자 1은 월요일(0~6) 일요일~토요일
# 아래 명령어는 월요일 새벽3시(우리나라기준) 실행되며 갱신 시 nginx재시작.
0 18 * * 6 /snap/bin/certbot renew --renew-hook="sudo systemctl restart nginx"

기타 명령어

# cerbot 위치 확인
$ which certbot 

# Crontab 보기
$ sudo crontab -l

# Crontab 편집
$ sudo crontab -e

# Crontab 실행 로그
$ view /var/log/syslog
profile
재밌는 개발

0개의 댓글