예전에는 HTTPS를 쓰려면 비싸고 다루기 까다로운 인증서가 필요했습니다. Let's Encrypt가 이를 바꿔 놓았습니다. 무료이며, 발급부터 갱신까지 완전히 자동화할 수 있습니다. 방어자의 관점에서 작동 원리를 살펴봅니다.
작동 원리: 도메인 통제를 자동으로 증명한다(ACME)
전통적인 인증서는 신청하고, 신원 서류를 제출하고, 기다리는 과정을 모두 손으로 했습니다. Let's Encrypt는 이를 **ACME(Automatic Certificate Management Environment)**로 대체합니다. 전체 교환을 기계 대 기계의 단계로 바꾸는 프로토콜입니다.
핵심은 도메인 통제(도메인 검증, DV)만 검증한다는 점입니다. 기업의 법적 실재 여부는 심사하지 않으며, 그래서 과정이 가벼워 완전히 자동화할 수 있습니다. 암호화 자체는 유료 인증서보다 약하지 않습니다.
90일 수명은 자동 갱신을 전제로 한 설계다
Let's Encrypt 인증서는 유효기간이 90일입니다. 이 짧은 기간은 의도된 것입니다.
유출된 키의 피해를 제한한다
서버의 개인 키가 유출되더라도, 단기 인증서는 악용될 수 있는 기간을 줄입니다. 폐기가 늦어지더라도 스스로 만료됩니다.
자동 갱신을 기본값으로 만든다
90일은 손으로 갱신하기에 비현실적이므로 운영자는 자동화할 수밖에 없습니다. 이는 업계 전체를 '인증서는 자동으로 교체하는 것'이라는 방향으로 이끌었습니다. 실무에서 갱신 도구는 만료 약 30일 전부터 시도를 시작합니다.
그래서 실제 일은 모니터링이다
자동 갱신은 아무도 모르게 멈출 수 있습니다. 망가진 cron, 바뀐 권한, 더 이상 통과하지 않는 도메인 확인 같은 경우입니다. 알아채지 못하면 90일 뒤에 만료됩니다. 방어 습관은 갱신 성공 여부와 남은 일수를 모니터링하는 것입니다.
이 사이트의 관점: 우리도 이렇게 운영한다(자동 TLS)
이 사이트는 Caddy 웹 서버 위에서 운영되며, 도메인을 가리키기만 하면 Let's Encrypt 인증서를 자동으로 발급하고 갱신합니다(인증서 설정이 거의 없습니다). '인증서를 신경 쓰지 않아도 되는 것'이 목표입니다. 사람이 손으로 만지는 곳이 적을수록 교체를 잊어 생기는 만료 사고도 줄어듭니다.
certbot을 cron으로 돌린다면, 안전한 방법은 그 cron이 실제로 아직 돌고 있는지를 모니터링하는 것입니다. 돌고 있으리라 믿기만 하지 마세요.
수명은 짧아지고 있다(2026년 10월 기준 일정)
현재는 90일이 표준이지만, Let's Encrypt는 수명을 단계적으로 줄이겠다고 발표했습니다. 브라우저 제조사와 인증 기관으로 이루어진 업계 단체 CA/Browser Forum도 브라우저가 신뢰하는 인증서의 최대 수명을 2026년 3월부터 단계적으로 줄여 2029년 3월에 47일로 하기로 결정했습니다.
| 시기 | 바뀌는 것 |
|---|---|
| 2026년 10월 현재 | 90일 수명 |
| 2026년 5월 13일부터 | 선택형 tlsserver 프로필로 45일 인증서 제공 |
| 2027년 2월 10일부터 | 기본(classic 프로필)이 64일로. 도메인 검증 재사용 기간은 10일로 단축 |
| 2028년 2월 16일부터 | 기본이 45일로. 도메인 검증 재사용 기간은 7시간으로 단축 |
약 6일(160시간) 인증서를 주는 shortlived 프로필도 2026년 1월부터 정식 제공되고 있습니다. IP 주소 인증서는 이 단기 인증서로만 발급됩니다.
실무상의 요점은 '60일마다'처럼 갱신 간격을 고정하지 않는 것입니다. Let's Encrypt는 CA가 갱신 시점을 알려 주는 ARI(ACME Renewal Information)를 지원하는 클라이언트를 권장하며, ARI가 없다면 수명의 3분의 2가 지났을 때 갱신하라고 안내합니다. 일수를 고정한 cron 작업은 수명이 짧아지면 만료 사고를 일으키기 시작합니다.
2025년에 끝난 것: OCSP와 만료 안내 이메일
Let's Encrypt는 2025년에 두 가지를 중단했습니다. 오래된 글이나 설정을 따라 할 때 주의하세요.
- OCSP(인증서가 폐기되었는지 매번 확인하는 구조): 2025년 5월 7일 인증서에서 OCSP URL이 제거되었고, 8월 6일 응답 서버가 종료되었습니다. 폐기 확인은 이제 CRL(폐기된 인증서 목록)에 의존합니다. 이유 중 하나는 개인정보 보호였습니다. OCSP에서는 CA가 어떤 IP 주소가 어떤 사이트를 방문하는지 알 수 있었습니다.
- 만료 안내 이메일: 2025년 6월 4일 중단되었습니다. 예전에는 만료가 가까워지면 이메일이 왔지만 이제는 오지 않습니다. 자체적인 만료 모니터링이 필요합니다.
가장 흔한 사고: 갱신 정지, 그리고 만료
HTTPS에서 가장 흔한 문제는 공격이 아니라 만료된 인증서입니다. 만료되면 브라우저는 전체 화면 경고를 띄우고 방문자는 거의 언제나 떠납니다. 원인은 거의 항상 '갱신 자동화가 망가졌는데 아무도 알아채지 못했다'입니다.
그래서 자신의 인증서 만료를 주기적으로 확인하는 방법을 갖춰야 합니다. 이 사이트의 사이트 보안 점검은 소유를 확인한 사이트에 대해 다른 점검과 함께 TLS 인증서(남은 일수, 만료, 오래된 프로토콜)를 확인합니다. 갱신을 자동화한 뒤, 그 자동화가 계속 작동하는지 바깥에서 검증하세요. 이 두 가지 습관을 함께 지키면 만료 사고를 거의 완전히 막을 수 있습니다.
도메인 검증 방식(챌린지) 비교
ACME에는 도메인 통제를 증명하는 방법이 세 가지 있습니다. 환경에 맞는 것을 고르세요.
| 방식 | 놓는 것 | 와일드카드 인증서 | 적합한 경우 |
|---|---|---|---|
| HTTP-01 | 웹 서버의 정해진 경로에 파일 | 불가 | 80번 포트로 접근할 수 있는 일반 웹 서버 |
| DNS-01 | DNS의 TXT 레코드 | 가능 | *.example.com이 필요하거나, 서버가 외부에 공개되어 있지 않은 경우 |
| TLS-ALPN-01 | 443번 포트 TLS 연결에서의 응답 | 불가 | 대형 호스팅 사업자와 리버스 프록시 |
DNS-01을 자동화하려면 서버에 DNS API 키를 두어야 합니다. 그 키가 유출되면 누군가 도메인의 레코드를 바꿀 수 있으므로, 키를 TXT 레코드로 한정할 수 있는 DNS 사업자를 고르고 키를 두는 곳을 최소화하세요.
자신의 사이트 점검 방법
브라우저에서 발급자와 만료일을 확인한다
갱신이 실제로 실행되는지 확인한다
certbot certificates로 만료일을, certbot renew --dry-run으로 갱신을 시험할 수 있습니다. systemd 호스트에서는 systemctl list-timers에 certbot 타이머가 있는지 확인합니다. Caddy는 인증서 발급과 갱신을 로그에 기록합니다.요청하지 않은 인증서가 없는지 찾는다
발급할 수 있는 CA를 제한한다
남은 일수를 외부에서 모니터링한다
사례: 2021년의 루트 인증서 만료
인증서는 신뢰받는 루트 인증서까지 이어지는 체인으로 검증됩니다. Let's Encrypt의 인증서는 원래 다른 CA의 루트(DST Root CA X3)를 통해 신뢰받았고, 그 루트가 2021년 9월 30일에 만료되었습니다.
그날부터 Let's Encrypt 자체의 루트(ISRG Root X1)를 신뢰하지 않는 오래된 기기와 소프트웨어에서는 Let's Encrypt를 쓰는 사이트에 인증서 경고가 뜨기 시작했습니다(오래된 Android 기기는 특별한 조치로 계속 작동했습니다). 사이트의 인증서는 제대로 갱신되었는데도, 오래된 기기를 쓰는 사용자는 연결할 수 없게 되었습니다.
오래된 기기가 연결하는 API나 시스템을 운영한다면, Let's Encrypt의 공지를 따라가며 중간 인증서와 루트의 변경에 대비하세요. Let's Encrypt는 중간 인증서를 설정에 고정하지 말고, ACME 클라이언트가 받은 체인을 쓰라고 권합니다.
이어서 읽기
- 사고에서 배우기: Heartbleed(많은 서버의 개인 키를 위험에 빠뜨린 TLS/OpenSSL 결함)
- 자신의 사이트 점검: 사이트 보안 점검(TLS 인증서, 헤더, 노출된 파일을 한 보고서로)
- 기본: 개인 개발자를 위한 보안 베이스라인 체크리스트
출처(1차 자료)
- Let's Encrypt 공식 블로그(2025년 12월 2일, 45일로의 수명 단축 계획) — letsencrypt.org(64일·45일 시행일, 검증 재사용 기간, ARI 권장)
- Let's Encrypt 공식 블로그(2026년 1월 15일, 6일 인증서와 IP 주소 인증서 정식 제공) — letsencrypt.org
- Let's Encrypt 공식 블로그(2024년 12월 5일, OCSP 종료) — letsencrypt.org(OCSP URL 제거와 응답 서버 종료 날짜)
- Let's Encrypt 공식 블로그(2025년 1월 22일, 만료 안내 이메일 종료) — letsencrypt.org
- Let's Encrypt, "Challenge Types" — letsencrypt.org
- Let's Encrypt, "Integration Guide" — letsencrypt.org(갱신 시점, 중간 인증서를 고정하지 않기)
- Let's Encrypt, "DST Root CA X3 Expiration (September 2021)" — letsencrypt.org
- CA/Browser Forum, "Ballot SC081v3"(2025년 4월 11일 가결) — cabforum.org(공개 인증서의 최대 수명이 2029년 3월에 47일)