SSL 인증서 갱신 방법, certbot 자동 갱신 점검

핵심 요약
  • certbot은 보통 타이머나 cron으로 하루 두 번 renew를 실행하고, 갱신 시기가 된 인증서만 실제로 갱신합니다.
  • 갱신은 certbot renew --dry-run으로 미리 시험하고, 갱신 후에는 웹 서버가 새 파일을 읽도록 reload가 필요합니다.
  • 유료 인증서는 새 CSR로 재발급을 받아 서버 파일을 교체하는 방식이 일반적이며, 절차는 발급 기관 안내를 따릅니다.

SSL 인증서는 한 번 받으면 끝나는 것이 아니라 정해진 주기로 갱신해야 합니다. 갱신을 놓치면 방문자에게 보안 경고가 뜨기 때문에, 관리자가 가장 자주 실수하는 지점이기도 합니다. 다행히 무료 인증서를 발급하는 Let’s Encrypt는 자동 갱신을 전제로 설계되어 있어서, 한 번 제대로 설정하면 이후에는 점검만 하면 됩니다.

이 글에서는 certbot으로 자동 갱신을 확인하는 방법, 갱신을 시험하는 방법, 유료 인증서를 갱신하는 일반적인 흐름, 갱신 후 확인 순서를 정리합니다. 현재 만료일부터 알고 싶다면 SSL 인증서 만료일 확인 방법 글을 먼저 보세요.

Let’s Encrypt 인증서의 수명과 갱신 시기

Let’s Encrypt FAQ는 기본 인증서의 유효기간이 90일이고, 이 수명은 조정할 수 없다고 설명합니다. 같은 문서는 90일 인증서를 60일마다 갱신하라고 권장합니다. 갱신 기한에 여유를 두어 실패해도 재시도할 시간을 확보하려는 취지입니다.

앞으로는 이 기간이 더 짧아집니다. 2026년 10월 24일에 확인한 Let’s Encrypt 공지에 따르면 기본 프로필은 2027년 2월 10일부터 64일, 2028년 2월 16일부터 45일 인증서로 바뀝니다. 일정은 바뀔 수 있으므로 공지 원문을 다시 확인하세요. 중요한 점은 갱신을 사람이 기억해서 하는 방식은 곧 유지하기 어려워진다는 것입니다.

certbot 자동 갱신 구조

certbot 문서에 따르면 대부분의 설치는 자동 갱신 설정을 이미 포함합니다. /etc/crontab, /etc/cron.*/*, systemd 타이머 중 어딘가에 certbot renew 항목이 있는지 보면 됩니다.

systemctl list-timers | grep -i certbot
sudo certbot certificates

certbot renew는 설치된 모든 인증서를 살펴보고 갱신 시기가 된 것만 갱신합니다. 대부분의 실행에서는 아무 일도 하지 않기 때문에 자주 실행해도 괜찮습니다. 문서가 예로 드는 수동 설정은 하루에 두 번, 임의의 지연 시간을 두고 실행하는 방식입니다.

# /etc/crontab 예시 (certbot 문서 방식)
0 0,12 * * * root sleep $SLEEPTIME && certbot renew -q

갱신 시기 기준도 알아 둘 필요가 있습니다. 문서는 Certbot 4.0.0부터 인증서 수명이 3분의 1 이하로 남았을 때 갱신 대상이 된다고 설명하며, 이전 버전은 고정 30일이었습니다. 서버에 설치된 certbot 버전에 따라 갱신 시점이 달라질 수 있습니다.

인증서 만료일과 남은 일수를 바로 확인할 수 있습니다.

SSL 만료일 확인

갱신 시험과 강제 갱신

설정을 바꾸었거나 갱신이 잘 되는지 의심스러울 때는 먼저 시험 실행을 합니다.

sudo certbot renew --dry-run

dry-run은 Let’s Encrypt 스테이징 서버를 이용해 인증서를 저장하지 않고 절차만 점검합니다. 이 시험이 실패한다면 실제 갱신도 실패할 가능성이 높으니, 출력된 오류 메시지를 먼저 해결하세요. 흔한 원인은 80번 포트 차단, 웹 서버 설정 변경으로 인한 인증 파일 경로 문제, DNS 레코드 변경입니다. HTTP-01 방식 검증은 80번 포트에서만 수행되며, 와일드카드 인증서는 DNS-01 방식이 필요하다고 Let’s Encrypt 문서는 설명합니다.

특정 인증서 하나만 갱신하고 싶으면 이름을 지정합니다. 강제 갱신 옵션도 있지만, 모든 인증서를 만료 여부와 상관없이 다시 발급하므로 요청 제한에 걸릴 수 있습니다. Let’s Encrypt 문서에 따르면 동일한 도메인 조합의 인증서는 7일에 5개까지만 발급됩니다(2026년 10월 확인 기준).

sudo certbot renew --cert-name example.com

갱신 후 웹 서버에 반영하기

인증서 파일만 새로 바뀌어도 웹 서버가 이전 파일을 메모리에 들고 있으면 방문자는 옛 인증서를 보게 됩니다. certbot은 갱신 성공 시에만 실행되는 deploy 훅을 지원하며, /etc/letsencrypt/renewal-hooks/deploy 폴더에 실행 파일을 두면 갱신 때마다 실행됩니다.

#!/bin/sh
# /etc/letsencrypt/renewal-hooks/deploy/reload-web.sh
nginx -t && systemctl reload nginx

Apache라면 apachectl configtest && systemctl reload apache2 형태로 씁니다. 재시작보다 reload를 쓰면 접속 중인 방문자의 연결이 끊기지 않습니다. 훅 파일에는 실행 권한(chmod +x)이 있어야 합니다.

유료 인증서 갱신 흐름

유료 인증서는 발급 기관마다 화면과 절차가 다르지만, 일반적인 흐름은 비슷합니다. 자세한 단계는 구매한 기관의 안내를 따르세요.

  1. 만료 전에 갱신(또는 재발급) 주문을 시작합니다.
  2. 서버에서 새 개인키와 CSR(인증서 서명 요청 파일)을 만듭니다.
  3. 도메인 소유 확인을 마칩니다. 이메일, DNS 레코드, 파일 업로드 중 하나를 씁니다.
  4. 발급된 인증서와 중간 인증서를 받아 서버의 기존 파일을 교체합니다.
  5. 웹 서버 설정을 검사하고 reload합니다.

유료 인증서는 자동 갱신이 없는 경우가 많아서 만료일 관리가 더 중요합니다. 설치 방법은 SSL 인증서 설치 방법에서 자세히 설명합니다.

갱신 후 확인 체크리스트

확인 항목방법
새 만료일이 반영되었는가openssl s_client로 실제 서비스 인증서 확인
중간 인증서가 포함되었는가fullchain.pem 사용 여부와 외부 SSL 검사 도구로 확인
갱신 일정이 살아 있는가systemctl list-timers, certbot renew —dry-run
갱신 오류가 없는가certbot 실행 출력과 로그 확인
백업이 있는가/etc/letsencrypt 폴더를 백업 대상에 포함

공개 검사 도구는 외부에서 보이는 인증서 정보만 알려 주므로, 갱신 스케줄러의 상태는 서버에서 직접 확인해야 합니다.

SSL 만료일 확인인증서 만료일과 남은 일수을 무료로 확인할 수 있습니다.

SSL 만료일 확인

자주 묻는 질문

certbot 자동 갱신이 되고 있는지 어떻게 확인하나요?

systemctl list-timers로 타이머가 있는지 보고, certbot renew --dry-run으로 시험 갱신을 실행해 보세요. dry-run은 인증서를 저장하지 않고 갱신 절차가 통과하는지만 확인합니다.

certbot은 만료 며칠 전에 갱신하나요?

문서 기준으로 Certbot 4.0.0부터는 인증서 수명이 3분의 1 이하로 남았을 때 갱신 대상이 됩니다. 그 이전 버전은 만료 30일 전이 기준이었으므로 설치된 버전을 먼저 확인하세요.

force-renewal을 매일 돌려도 되나요?

권하지 않습니다. certbot 문서는 CA의 요청 제한 때문에 일상적인 사용에 적합하지 않다고 설명합니다. 문제 해결용으로 한 번 쓰는 정도가 적당합니다.

갱신했는데 브라우저에는 예전 만료일이 보여요.

인증서 파일은 갱신되었지만 웹 서버가 새 파일을 다시 읽지 않았을 가능성이 큽니다. 설정 검사 후 reload를 실행하고, openssl s_client로 실제 서비스되는 만료일을 다시 확인하세요.

확인한 자료

기술 정보는 2026-10-24에 위 자료로 확인했습니다. 소프트웨어 버전·기본값·서비스 정책은 바뀔 수 있으므로 적용 전 각 문서의 최신 내용을 확인하세요. 이 글은 일반 정보이며 특정 서비스 가입을 권하지 않습니다.