snapd가 설치되어 있다는 가정하에 시작한다.
unbuntu 기준으로 aws인스턴스에는 기본적으로 설치되어있다.
sudo snap install --classic certbot
sudo certbot certonly \
--agree-tos \
--email someone@example.com \
--manual \
--preferred-challenges=dns \
-d *.example.com \
--server https://acme-v02.api.letsencrypt.org/directory
Please deploy a DNS TXT record under the name
_acme-challenge.example.com with the following value:
HejzlvXokaKoAq_xnr5LTplWbKYNScVH-ASy1vMYMGE
Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
인증서 받기 실행 후 위와 같은 메세지가 나오면
dns text recoard를 위 값으로 설정한다.
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
ssl_certificate /etc/letsencrypt/live/example.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.io/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
...
}
sudo nginx -t
sudo systemctl restart nginx
sudo systemctl status nginx
이방법은 인증서 자동 갱신이 안된다.
wild card인증서 받는 옵션중 manual 방식때문인데
자동 갱신을 하려면 발급 받을 때 이 옵션을 선택해서는 안된다.
다음 게시물에서 자동갱신될 수 있도록 발급 받는 방법을 쓰겠다.
certbot 위치확인
which certbot
crontab등록
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"
# Crontab 보기
$ sudo crontab -l
# Crontab 편집
$ sudo crontab -e
# Crontab 실행 로그
$ view /var/log/syslog
한국의 스티븐 잡스같아요