certbot으로 Let's Encrypt SSL 발급하고 자동 갱신하기
직접 서버(Apache, Nginx 등)를 운영한다면 certbot으로 Let's Encrypt 인증서를 무료로 발급하고 자동 갱신까지 설정할 수 있습니다. Let's Encrypt 인증서의 기본 유효기간은 90일이라, 자동 갱신은 사실상 필수입니다.
1. certbot 설치
운영체제 패키지로 설치하거나, Let's Encrypt가 권장하는 snap으로 설치합니다. 설치 후 certbot --version으로 확인합니다.
2. 인증서 발급
웹서버 플러그인을 쓰면 인증서 발급과 설정 적용이 한 번에 됩니다.
- Apache:
certbot --apache -d example.com -d www.example.com - Nginx:
certbot --nginx -d example.com -d www.example.com
--redirect 옵션을 더하면 HTTP 요청을 HTTPS로 자동 리다이렉트하도록 설정해 줍니다.
3. 자동 갱신 확인
certbot은 설치 시 자동 갱신 작업을 함께 등록합니다. 환경에 따라 systemd 타이머 또는 cron으로 동작합니다.
- 패키지 설치:
certbot.timer - snap 설치:
snap.certbot.renew.timer
systemctl list-timers로 타이머가 살아 있는지 확인하고, certbot renew --dry-run으로 갱신이 실제로 동작하는지 미리 시험해 보세요. 갱신은 만료 30일 이내일 때만 실제로 수행됩니다.
4. 갱신 후 웹서버 반영
인증서를 새로 받아도 웹서버가 다시 읽지 않으면 옛 인증서가 계속 나갑니다. Apache/Nginx 플러그인은 보통 자동으로 reload 하지만, 그렇지 않은 구성이라면 갱신 훅을 걸어 둡니다.
certbot renew --deploy-hook "systemctl reload nginx"
그래도 모니터링이 필요합니다
자동 갱신은 조용히 실패할 수 있습니다. 타이머가 비활성/마스킹되어 있거나, 갱신 후 reload가 누락되거나, DNS·방화벽 변경으로 도메인 검증이 막히는 경우입니다. 인증서 수명이 짧아질수록 실패에서 만료까지의 여유도 줄어듭니다. 실제로 서버가 내보내는 인증서를 외부에서 감시하면, 자동화가 멈춰도 만료 전에 사람이 알아챌 수 있습니다.