개발노트
고즐의 개발 및 서버 개발 노트Certbot 자동갱신 완전 가이드: cron과 systemd.timer 비교
# certbot자동갱신 # letsencryptssl # cron설정 # systemdtimer # https보안
무료 SSL Certbot SSL 구축부터 자동화까지 한눈에 정리
- 아파치 SSL 인증서 충돌 해결기: 도메인마다 다른 인증서가 뜰 때 대처법
- Certbot으로 HTTPS 적용하기: Rocky Linux 9 실전 가이드
- 록키 리눅스 서버 운영자를 위한 필수 명령어 가이드 북
- 서버에서 SSL 활성 여부와 남은 기간 자동 표시하기
- Certbot 자동갱신 완전 가이드: cron과 systemd.timer 비교
- Certbot으로 Wildcard 인증서 발급하는 실전 가이드
- Certbot Friendly VirtualHost 템플릿: Apache·Nginx 즉시 적용 가이드
- Certbot 오류 해결 총정리 FAQ 가이드
- Certbot 인증서 만료 알림 자동화 완전 가이드
![]()
Let’s Encrypt 서비스는 무료지만 유료와 성능으로는 동일한 서비스를 제공하고 있습니다. 하지만 불편한 부분은 유효 기간이 90일이라서 그전에 갱신이 필요하다는 부분입니다. 이것 또한 자동화를 해 놓으면 유료도 1년 2년 3년 상품이 있듯이 불편함 없이 사용이 가능합니다.
Certbot 자동갱신이 필요한 이유
HTTPS 인증서 유효기간은 90일이며, 만료 전 자동갱신은 서비스 안정성을 보장하는 핵심 운영 작업이다.
만료 위험 방지
Let’s Encrypt 인증서는 90일 단위로 발급되기 때문에 자동갱신이 없으면 도메인은 만료 에러가 발생하고 브라우저에서 보안경고 창이 뜬다. 이는 SEO 하락과 트래픽 손실로 이어지므로 운영 사이트는 반드시 자동갱신을 구성해야 한다.
운영 부담 감소
인증서를 수동으로 갱신하려면 주기적으로 명령을 실행해야 하고 도메인 DNS 또는 웹서버 구성을 변경했을 때 누락되기 쉽다. 자동화는 이러한 관리 부담을 획기적으로 줄인다.
Certbot 자동갱신 방식: cron vs systemd.timer
Certbot은 OS에 따라 cron 기반 또는 systemd.timer 기반으로 자동갱신을 수행한다.
cron 방식
CentOS 7, 일부 레거시 서버에서는 cron이 기본 자동갱신 방식이다. 하루 두 번 실행하여 갱신 필요성을 검사하고 조건이 맞으면 인증서를 갱신한다.
systemd.timer 방식
Rocky Linux 8/9, Ubuntu 20.04 이후는 대부분 systemd.timer가 기본 구조다. 서비스 단위로 체계적으로 관리되며 실패 로그 분석이 쉽고 최신 운영 환경에서 권장된다.
cron으로 자동갱신 설정하는 방법
cron 환경에서는 Certbot 갱신 명령을 직접 등록하거나 설치 시 자동 생성된 스케줄을 확인해야 한다.
1. cron 파일 확인
일부 시스템은 certbot 패키지 설치 시 자동으로 갱신 cron을 생성한다.
cat /etc/cron.d/certbot
2. 직접 cron 등록하기
직접 설정하는 경우 하루 2회 실행하도록 한다.
sudo crontab -e
0 */12 * * * certbot renew --quiet --deploy-hook "systemctl reload httpd"
3. Apache 또는 Nginx reload 자동 처리
갱신 성공 후 웹서버 reload가 필요하므로 deploy-hook을 활용한다.
certbot renew --deploy-hook "systemctl reload nginx"
systemd.timer로 자동갱신 설정하는 방법
Rocky Linux 9 환경에서는 systemd.timer가 기본이며 가장 안정적인 자동화 방식이다.
1. 타이머 활성 상태 확인
설치 시 자동 생성된다.
systemctl status certbot-renew.timer
2. 타이머 실행 주기 확인
기본적으로 하루 두 번 실행된다.
systemctl list-timers | grep certbot
3. 타이머 활성화
만약 활성화되지 않은 경우 수동으로 등록한다.
sudo systemctl enable --now certbot-renew.timer
4. 수동 테스트 실행
즉시 갱신을 테스트하고 로그를 확인할 수 있다.
sudo certbot renew --dry-run
운영 시 주의해야 하는 핵심 포인트
인증서 갱신 실패는 대부분 웹서버 설정 오류 또는 DNS 접근 실패 때문이다.
웹서버 포트 개방 확인
HTTP 인증 방식은 포트 80이 반드시 열려 있어야 한다. 방화벽 또는 프록시가 80 포트를 막으면 갱신이 실패한다.
DocumentRoot 변경 시 갱신 오류
웹서버 설정을 수정하면서 .well-known 디렉터리 접근이 차단되면 인증이 불가능하다. 변경 시 항상 접근 가능 여부를 점검해야 한다.
DNS 인증을 사용하는 경우 TXT 기록 반영 시간
DNS 프로바이더별 전파 시간이 다를 수 있어 자동갱신이 지연될 수 있다. 이를 해결하려면 DNS API 방식 또는 더 짧은 TTL을 고려한다.
설정 후 반드시 dry-run 테스트
모든 구성 후 아래 명령으로 검증한다.
sudo certbot renew --dry-run
마무리
Certbot 자동갱신은 HTTPS 운영 안정성을 유지하는 필수 요소이며 cron, systemd.timer 모두 확실한 구성을 통해 장애 없는 운영을 가능하게 한다.
운영 중인 웹서비스가 있다면 인증서 만료 에러는 절대 발생해서는 안 된다. 스케줄러 확인, dry-run 테스트, 웹서버 reload 자동화까지 모두 정리해두면 장기적으로 안정적인 HTTPS 환경을 구축할 수 있다.