모든 시작 가이드 시작하기

DNS-01 챌린지: 작동 원리와 완료 방법

DNS-01은 와일드카드 인증서(*.example.com)를 지원하는 ACME 챌린지 유형입니다. DNS에 TXT 레코드를 추가하여 도메인 소유권을 증명합니다 — 웹 서버나 포트 80 접근이 필요하지 않습니다.

작동 원리

  1. Let’s Encrypt가 각 도메인에 대한 토큰을 제공합니다
  2. GetHTTPS가 키 인가의 SHA-256 다이제스트를 계산하고 base64url로 인코딩합니다
  3. _acme-challenge.yourdomain.com에 이 값으로 TXT 레코드를 생성합니다
  4. Let’s Encrypt가 공개 DNS에서 TXT 레코드를 조회합니다
  5. 값이 일치하면 챌린지를 통과하고 인증서가 발급됩니다

GetHTTPS를 사용하면 1-2단계가 자동으로 처리됩니다 — DNS 제공자에 레코드 이름과 값을 복사하여 붙여넣기만 하면 됩니다.

단계별 설정

1단계: GetHTTPS에서 TXT 레코드 정보 확인

GetHTTPS가 다음을 표시합니다:

  • 레코드 이름: _acme-challenge.yourdomain.com
  • 레코드 값: base64url 인코딩된 문자열(약 43자)

2단계: DNS 제공자에서 TXT 레코드 추가

필드
유형TXT
이름_acme-challenge (일부 제공자는 도메인을 자동으로 추가)
GetHTTPS에 표시된 문자열 — 정확히 복사-붙여넣기
TTL60초 (또는 제공자가 허용하는 가장 낮은 값)

제공자별 안내:

Cloudflare

  1. 대시보드 → 도메인 → DNSRecordsAdd record
  2. Type: TXT, Name: _acme-challenge, Content: 값 붙여넣기
  3. TTL: Auto
  4. Save 클릭

AWS Route 53

  1. Hosted zones → 도메인 → Create record
  2. Record name: _acme-challenge
  3. Record type: TXT
  4. Value: "값-여기-붙여넣기" (따옴표 포함 — Route 53은 이를 요구)
  5. TTL: 300
  6. Create records 클릭

GoDaddy

  1. DNS ManagementAdd
  2. Type: TXT, Name: _acme-challenge, Value: 값 붙여넣기
  3. TTL: 1 Hour (가능한 가장 낮은 값)
  4. Save 클릭

Namecheap

  1. Domain ListManageAdvanced DNSAdd new record
  2. Type: TXT, Host: _acme-challenge, Value: 값 붙여넣기
  3. TTL: Automatic
  4. Save all changes 클릭

Google Cloud DNS

gcloud dns record-sets create _acme-challenge.yourdomain.com. \
  --zone=your-zone --type=TXT --ttl=60 --rrdatas="the-value"

DigitalOcean

  1. NetworkingDomains → 도메인 → Add record
  2. Type: TXT, Hostname: _acme-challenge, Value: 값 붙여넣기
  3. TTL: 30

3단계: DNS 전파 대기

DNS 변경은 제공자와 TTL 설정에 따라 1-15분이 소요됩니다. GetHTTPS의 사전 검사 기능이 Let’s Encrypt에 제출하기 전에 TXT 레코드가 공개 인터넷에서 보이는지 확인합니다.

전파를 수동으로 확인:

dig TXT _acme-challenge.yourdomain.com +short
# 값이 따옴표로 감싸져 반환되어야 함

온라인 전파 검사기를 사용하여 레코드가 전 세계적으로 보이는지 확인할 수도 있습니다.

4단계: GetHTTPS에서 검증

Verify를 클릭합니다. GetHTTPS가 Let’s Encrypt에 챌린지를 제출합니다. TXT 레코드가 올바르면 인증서가 발급됩니다.

5단계: 정리

인증서가 발급된 후 DNS에서 _acme-challenge TXT 레코드를 삭제합니다. 더 이상 필요하지 않으며, 남겨진 레코드는 갱신 시 혼란을 초래할 수 있습니다.

DNS-01을 사용한 와일드카드 인증서

*.yourdomain.com 인증서를 발급받으려면 반드시 DNS-01을 사용해야 합니다. HTTP-01로는 와일드카드를 검증할 수 없는데, 와일드카드가 무한한 호스트 이름을 포함하기 때문에 파일을 배치할 단일 서버가 없기 때문입니다.

와일드카드 + 기본 도메인: *.example.comexample.com 모두를 원한다면, GetHTTPS가 두 번의 검증을 요구할 수 있습니다. 일부 설정에서는 _acme-challenge.example.com두 개의 TXT 레코드가 동시에 필요합니다 — 와일드카드용 하나와 apex용 하나. 검증이 통과할 때까지 두 레코드를 모두 유지하세요.

전체 와일드카드 인증서 가이드 →

DNS-01 vs HTTP-01

DNS-01HTTP-01
수행 작업DNS에 TXT 레코드 추가서버에 파일 배치
필요한 접근도메인 DNS 설정웹 서버 파일 시스템
포트 요구사항없음포트 80 개방 필요
와일드카드 지원✅ 와일드카드에 필수
서버 없이 작동
속도1-15분 (DNS 전파)즉시 (파일이 접근 가능한 경우)
CDN 뒤에서 작동✅ 항상⚠️ CDN 우회가 필요할 수 있음
추천 용도와일드카드, 서버 없음, CDN 환경대부분의 단일 도메인 인증서

DNS-01을 선택하세요: 와일드카드가 필요하거나, 포트 80이 차단되었거나, 서버가 공개적으로 접근할 수 없거나, CDN 뒤에 있는 경우.

HTTP-01을 선택하세요: 웹 서버가 있고, 포트 80이 열려 있고, 와일드카드가 필요하지 않은 경우. 더 빠릅니다(전파 대기 없음).

문제 해결

GetHTTPS에서 TXT 레코드를 찾지 못함

  • 더 기다리세요 — 일부 제공자는 5-15분이 걸립니다. 낮은 TTL이 도움이 되지만 전파 시간을 완전히 없애지는 못합니다.
  • 레코드 이름 확인: 일부 제공자는 도메인을 자동으로 추가합니다. _acme-challenge.example.com을 입력했는데 제공자가 .example.com을 추가하면 실제 레코드가 _acme-challenge.example.com.example.com(잘못됨)이 됩니다. _acme-challenge만 입력하고 제공자가 추가하도록 하세요.
  • 수동으로 확인:
    dig TXT _acme-challenge.yourdomain.com +short
    빈 결과가 나오면 레코드가 아직 전파되지 않은 것입니다.

잘못된 값 / 대소문자 불일치

  • 값은 대소문자를 구분합니다. GetHTTPS에서 직접 복사-붙여넣기하세요 — 다시 입력하지 마세요.
  • DNS 제공자가 요구하지 않는 한 따옴표를 추가하지 마세요(Route 53은 필요하지만, 대부분은 불필요).

여러 TXT 레코드 충돌

  • 새 레코드를 추가하기 전에 이전 시도의 _acme-challenge TXT 레코드를 삭제하세요.
  • 예외: 와일드카드 + apex 검증에서는 같은 이름에 두 레코드가 동시에 필요할 수 있습니다.

DNS 제공자가 TXT 레코드를 지원하지 않음

드물지만, 일부 기본 DNS 서비스에는 TXT 지원이 없습니다. 모든 레코드 유형을 지원하는 완전한 DNS 제공자(Cloudflare 무료 플랜)로 전환하세요.

DNS-01을 사용해야 하는 경우

시나리오DNS-01?
와일드카드 인증서 (*.example.com)✅ 필수
포트 80 차단✅ 최적 옵션
내부 네트워크 서버✅ 유일한 옵션
Cloudflare/CDN 프록시 뒤✅ 프록시 문제 회피
서버 없는 도메인 (파킹, 리다이렉트)✅ 유일한 옵션
서버 접근이 가능한 단순 단일 도메인 인증서⚠️ HTTP-01이 더 빠름

자주 묻는 질문

DNS-01 챌린지를 자동화할 수 있나요?

네, CLI 도구를 사용하면 됩니다. acme.sh는 150개 이상의 DNS 제공자에 대한 내장 API 통합이 있어 TXT 레코드를 자동으로 추가하고 삭제할 수 있습니다. Certbot도 주요 제공자용 DNS 플러그인을 지원합니다. GetHTTPS는 수동 DNS 변경이 필요합니다(브라우저 기반, API 호출 없음).

ACME 클라이언트에 DNS API 키를 제공하는 것이 안전한가요?

API 키는 DNS 존에 대한 쓰기 권한이 있으므로 서버 자격 증명과 동일한 보안으로 취급하세요. 가능하면 범위가 제한된 API 토큰을 사용합니다(예: Cloudflare의 존별 토큰). 최대 보안을 위해 수동 DNS 변경으로 GetHTTPS를 사용하세요 — API 키가 필요 없습니다.

TXT 레코드를 얼마나 오래 유지해야 하나요?

검증 중에만 필요합니다 — 보통 몇 분입니다. 인증서가 발급되면 레코드를 삭제합니다. 갱신 시 새 값으로 새 레코드를 만들게 됩니다.

DNS 제공자의 전파가 느리면 어떻게 하나요?

TTL을 제공자가 허용하는 가장 낮은 값(이상적으로 60초)으로 설정합니다. 전파가 15분 이상 걸리면 레코드 이름/값의 오타를 확인하거나 다른 DNS 제공자를 시도합니다. Cloudflare는 TXT 레코드를 몇 초 내에 전파합니다.

DNS-01은 Cloudflare 프록시(오렌지 클라우드)에서 작동하나요?

네. DNS-01 검증은 HTTP가 아닌 DNS를 통해 TXT 레코드를 조회하므로 Cloudflare 프록시 상태(오렌지 vs 그레이 클라우드)가 중요하지 않습니다. 이것이 프록시에 의해 차단될 수 있는 HTTP-01 대비 핵심 장점입니다.

관련 기사

시작하기 2026-05-08
무료 SSL 인증서 받는 방법 (단계별 가이드)
5분 만에 Let's Encrypt에서 무료 SSL 인증서를 발급받으세요 - 소프트웨어 설치 불필요, 계정 생성 불필요. 4가지 방법, 두 가지 챌린지 유형, 6개 플랫폼 설치, 문제 해결을 포함하는 완전 가이드입니다.
시작하기 2026-05-08
HTTP-01 챌린지: 작동 원리와 완료 방법
HTTP-01은 SSL 인증서의 도메인 소유권을 증명하는 가장 간단한 방법입니다. 서버에 파일을 배치하면 Let's Encrypt가 확인하고 인증서가 발급됩니다.
시작하기 2026-05-07
무료 와일드카드 SSL 인증서 받는 방법
GetHTTPS를 사용하여 Let's Encrypt에서 무료 와일드카드 SSL 인증서(*.example.com)를 받으세요. DNS-01 챌린지만 필요합니다. Cloudflare, Route 53, GoDaddy, Namecheap DNS 설정을 다룹니다.
브라우저에서 무료 SSL 인증서 받기
설치 불필요, 계정 불필요. 개인키는 항상 기기에 남습니다.
인증서 발급