0Pricing
Cryptology Academy · 강의

Let's Encrypt와 ACME 프로토콜 자동화

Certbot 및 기타 클라이언트를 사용해 ACME 프로토콜로 인증서 발급과 갱신을 자동화합니다.

Let's Encrypt와 ACME 프로토콜 자동화은(는) CoddyKit의 무료 Cryptology Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cryptology Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

Let's Encrypt 소개

Let's Encrypt는 Internet Security Research Group(ISRG)이 운영하는 무료 자동화 개방형 인증 기관으로, 2015년 12월 공개 베타로 출시되었습니다. 30억 개가 넘는 인증서를 발급했으며, 공개적으로 신뢰되는 TLS 인증서를 발급받는 데 드는 비용과 복잡성을 없애 웹 전반의 HTTPS 도입을 크게 확대했습니다.

ACME 프로토콜 개요

자동 인증서 관리 환경(ACME) 프로토콜은 2019년에 RFC 8555로 표준화되었으며, 클라이언트가 도메인 소유권을 자동으로 증명하고 CA에서 인증서를 받는 방법을 정의합니다. ACME는 수동 도메인 검증 절차를 암호학적으로 검증되는 자동 교환 방식으로 대체하여, 별도의 수동 개입 없이 인증서 수명 주기를 관리할 수 있게 합니다.

HTTP-01 검증 과제

HTTP-01 검증 과제는 ACME 클라이언트가 "http://DOMAIN/.well-known/acme-challenge/TOKEN"에 특정 토큰 파일을 배치하도록 요구하여 도메인 소유권을 확인합니다. CA는 토큰을 검증하기 위해 이 URL에 접속합니다. HTTP-01은 구현이 간단하지만 80번 포트에 접근할 수 있어야 하며 와일드카드 인증서에는 사용할 수 없습니다.

DNS-01 검증 과제

DNS-01 검증 과제는 ACME 클라이언트가 "_acme-challenge.DOMAIN"에 특정 값이 담긴 DNS TXT 레코드를 생성하도록 요구하여 도메인 소유권을 확인합니다. CA는 레코드를 검증하기 위해 DNS를 조회합니다. DNS-01은 와일드카드 인증서("*.example.com") 발급을 지원하는 유일한 검증 과제이며, 웹 서버가 방화벽 뒤에 있어도 작동합니다.

TLS-ALPN-01 검증 과제

TLS-ALPN-01 검증 과제는 사용자 지정 ALPN 프로토콜 식별자인 "acme-tls/1"을 사용하여 TLS 계층에서 도메인 소유권을 확인합니다. ACME 클라이언트는 443번 포트에서 특수 확장 필드에 검증 토큰을 넣은 자체 서명 인증서를 일시적으로 제공합니다. 이 검증 과제는 실행 중인 웹 서버가 없어도 작동하며 부하 분산 환경을 지원합니다.

Certbot 참조 클라이언트

Certbot은 Electronic Frontier Foundation이 Let's Encrypt를 위해 만든 참조 ACME 클라이언트입니다. 도메인 검증, 인증서 발급, 자동 갱신을 포함한 전체 인증서 수명 주기를 자동화합니다. Certbot에는 TLS 설정을 자동으로 구성하는 Apache 및 nginx용 플러그인이 포함되어 있습니다. 최신 Linux 배포판에서는 "snap install --classic certbot"으로 설치할 수 있습니다.

대체 ACME 클라이언트

Certbot 외에도 다양한 사용 사례에 맞는 여러 ACME 클라이언트가 있습니다. acme.sh는 가벼운 환경에서 널리 사용되는 순수 셸 스크립트 ACME 클라이언트입니다. Caddy 웹 서버에는 ACME 기능이 내장되어 있으며 인증서를 자동으로 갱신합니다. 컨테이너 환경에서 사용되는 Traefik은 컨테이너화된 작업 부하를 위해 certificatesResolvers 구성을 통해 ACME를 처리합니다.

인증서 갱신 자동화

Let's Encrypt 인증서는 자동화를 장려하고 개인 키가 유출되었을 때 노출되는 기간을 줄이기 위해 설계상 유효 기간이 90일입니다. Certbot은 하루에 두 번 "certbot renew"를 실행하는 systemd 타이머 또는 cron 작업을 설치하고, 만료까지 30일 이내로 남은 인증서를 갱신합니다. 수동 갱신은 서비스 중단으로 이어지는 잘못된 방식입니다.

Let's Encrypt 요청 제한

Let's Encrypt는 악용을 방지하기 위해 요청 제한을 적용합니다. 주요 제한은 등록된 도메인당 주 50개 인증서와 주 5개 중복 인증서입니다. 검증에 실패한 시도도 호스트 이름당 시간당 5회로 제한됩니다. 개발 중에는 공개적으로 신뢰되지 않는 테스트 CA를 대상으로 인증서를 무제한 발급할 수 있는 Let's Encrypt 스테이징 환경을 제공합니다.

다중 도메인 및 와일드카드 인증서

하나의 ACME 인증서로 여러 도메인(주체 대체 이름)을 포함할 수 있습니다. "certbot --domains example.com,www.example.com,api.example.com"을 실행하면 SAN이 3개인 인증서가 발급됩니다. 와일드카드 인증서("*.example.com")에는 DNS-01 검증이 필요하며 한 단계 하위 도메인을 모두 포함합니다. 와일드카드는 최상위 도메인인 example.com 자체를 포함하지 않으므로 추가 SAN이 필요합니다.

내부 PKI를 위한 ACME

ACME 프로토콜은 Let's Encrypt에만 국한되지 않습니다. Step-CA(smallstep), EJBCA, HashiCorp Vault와 같은 내부 CA는 내부 인증서 자동화를 위해 ACME 엔드포인트를 제공할 수 있습니다. 이를 통해 공개 서비스를 위해 사용되는 것과 동일한 자동화된 인증서 수명 주기 관리를 내부 mTLS 인프라와 비공개 서비스에도 적용할 수 있습니다.

ACME 검증 과제 확인

"*.example.com"과 같은 와일드카드 인증서를 발급하려면 어떤 ACME 검증 과제가 필요합니까?

수업 정리: Let's Encrypt와 ACME

Let's Encrypt는 ACME 프로토콜(RFC 8555)을 통해 무료 인증서를 제공합니다. HTTP-01 검증 과제는 80번 포트에서 와일드카드가 아닌 인증서에 사용할 수 있습니다. DNS-01은 DNS 영역 제어 권한을 증명하여 와일드카드 인증서를 발급합니다. TLS-ALPN-01은 웹 서버 없이 작동합니다. Certbot과 acme.sh가 전체 수명 주기를 자동화합니다. 90일 인증서에는 자동화가 필요합니다. 요청 제한 때문에 테스트 중에는 스테이징 환경을 사용해야 합니다.

자주 묻는 질문

“Let's Encrypt와 ACME 프로토콜 자동화” 강의는 무료인가요?

네 — “Let's Encrypt와 ACME 프로토콜 자동화” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cryptology Academy 강의 전체를 잠금 해제할 수 있습니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“Let's Encrypt와 ACME 프로토콜 자동화”에서 뭘 배우나요?

Certbot 및 기타 클라이언트를 사용해 ACME 프로토콜로 인증서 발급과 갱신을 자동화합니다. 브라우저에서 직접 실행하는 실습 코드로 Cryptology Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cryptology Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cryptology Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“Let's Encrypt와 ACME 프로토콜 자동화” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cryptology Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cryptology Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. OpenSSL 명령줄 핵심
  2. 인증서 체인 생성 및 관리
  3. OCSP 스테이플링과 인증서 투명성
  4. Let's Encrypt와 ACME 프로토콜 자동화
← Cryptology Academy(으)로 돌아가기