포스트 목적
배포 시 사용한 Certbox 을 이용한 SSL 인증서가 곧 만료된다고 하여 이참에 참고할 만한 명령어를 모아두고자 작성되었습니다.
Certbot 설치
운영체제에 따라 Certbot을 설치하는 명령어가 다릅니다. 일반적으로 다음과 같은 명령어를 사용합니다
Ubuntu/Debian
sudo apt update
sudo apt install certbot
sudo apt install python3-certbot-nginx # Nginx 플러그인
sudo apt install python3-certbot-apache # Apache 플러그인
CentOS/RHEL
sudo yum install certbot
sudo yum install python3-certbot-nginx # Nginx 플러그인
sudo yum install python3-certbot-apache # Apache 플러그인
인증서 발급
Certbot을 사용하여 인증서를 발급하는 방법은 웹 서버에 따라 다릅니다. 일반적으로 가장 많이 사용하는 웹 서버인 Nginx와 Apache를 기준으로 설명합니다.
Nginx
sudo certbot --nginx -d example.com -d http://www.example.com
Apache
sudo certbot --apache -d example.com -d http://www.example.com
스탠드얼론 (서버 없이)
sudo certbot certonly --standalone -d example.com -d http://www.example.com
인증서 갱신
Let's Encrypt 인증서는 기본적으로 90일 동안 유효합니다. 자동 갱신을 설정하지 않았다면, 수동으로 갱신할 수 있습니다.
모든 인증서 갱신
sudo certbot renew
갱신 시 시뮬레이션 (테스트)
앞서 명령어를 사용하여 갱신을 시도했을 때 에러가 발생하지 않는지를 미리 테스트할 때 사용하는 명령어 입니다.
sudo certbot renew --dry-run
인증서 삭제
더 이상 사용하지 않는 도메인의 인증서를 삭제할 수 있습니다.
특정 도메인의 인증서 삭제
sudo certbot delete --cert-name example.com
기타 명령어
인증서 목록 확인
sudo certbot certificates
인증서 디버그 정보 확인
sudo certbot --version
sudo certbot --help
웹 서버 재시작 (필요 시)
인증서 갱신 후 웹 서버를 재시작해야 할 때가 있습니다.
Nginx
sudo systemctl restart nginx
Apache
sudo systemctl restart apache2
자동 갱신 설정
자동 갱신을 위해 cron 작업을 설정할 수 있습니다.
자동 갱신 스크립트 생성
자동 갱신을 위한 스크립트를 만들어 둘 수 있습니다. 이 스크립트는 인증서를 갱신한 후 웹 서버를 재시작하는 작업을 포함할 수 있습니다.
스크립트 파일 생성
참고로 아래 명령어를 사용해서 nano 로 편집기를 실행한 경우 Ctrl + O 를 누르면 저장이 되고, 파일 이름이 하단에 표시 됩니다. 정상적인 파일 이름이 표시되는 것을 확인했다면 Enter 를 누른 후 Ctrl + X 를 입력하여 편집기를 닫을 수 있습니다.
sudo nano /etc/cron.daily/certbot-renew
스크립트 내용 작성
스크립트 내용에 인증서 갱신 명령어와 웹 서버 재시작 명령어를 추가합니다.
#!/bin/sh
certbot renew --quiet
systemctl reload nginx # Nginx를 사용하는 경우
# systemctl reload apache2 # Apache를 사용하는 경우 (위 명령어 대신 사용)
스크립트에 실행 권한 부여
sudo chmod +x /etc/cron.daily/certbot-renew
crontab을 이용한 자동 갱신 설정
crontab을 이용하여 자동 갱신 작업을 설정할 수도 있습니다. crontab은 특정 시간에 주기적으로 명령을 실행할 수 있도록 설정할 수 있는 도구입니다.
crontab 파일 편집
sudo crontab -e
갱신 작업 추가
다음 내용을 추가하여 매일 자정에 갱신 작업을 시도하도록 설정합니다. 참가로 renew 의 경우 인증서가 30일 미만으로 남았을 때 실제 갱신을 시도합니다. 아래 크론이 자정마다 실행되더라도 실제 인증서 갱신은 renew 내부적으로 적용된 설정에 의해 인증서 만료 30일 전에만 이루어집니다.
0 0 * * * /usr/bin/certbot renew --quiet && /bin/systemctl reload nginx
# 0 0 * * * /usr/bin/certbot renew --quiet && /bin/systemctl reload apache2 # Apache를 사용하는 경우
자동 갱신 설정 확인
설정이 제대로 되었는지 확인하기 위해 다음 명령어를 사용할 수 있습니다.
crontab 작업 확인
sudo crontab -l
추가한 갱신 작업이 목록에 있는지 확인합니다.
로그 확인
자동 갱신 작업이 제대로 수행되었는지 확인하기 위해 로그 파일을 확인할 수 있습니다.
sudo tail -f /var/log/letsencrypt/letsencrypt.log
도움이 된 자료
https://certbot.eff.org/instructions?ws=nginx&os=arch
'나만의 모음집' 카테고리의 다른 글
🔧 링크 저장소 (0) | 2024.10.05 |
---|---|
🔧[매번 갱신] 유용한 도구 및 개념 공유소 (4) | 2024.08.31 |
리액트의 다양한 활용 팁을 정리하였습니다. 모르셨다면 하나 알아가세요. (0) | 2024.05.20 |
자바스크립트 활용 모음집 (0) | 2024.05.18 |
[모음집] NestJS(with TypeORM + PostgreSQL) 예제 모음집 (1) | 2024.05.17 |