무료로 https 인증을 받을 수 있는 Let’s Encrypt의 인증 방식에는 3가지가 있다. 공식문서에도 나와있는 내용을 이번에 경험하게 되어 기록한다.
1. HTTP-01 Challenge
- 도메인 소유자가 웹 서버의 특정 경로(/.well-known/acme-challenge/)에 인증 토큰을 제공하여 도메인 소유권을 증명하는 방식입니다.
- 요구사항:
- 포트 80에서 HTTP 요청을 처리할 수 있어야 합니다.
- 웹 서버가 외부에서 접근 가능해야 합니다.
- 장점:
- 설정이 간단하며 자동화가 용이합니다.
- 일반적인 웹 서버 환경에서 쉽게 구현할 수 있습니다.
- 단점:
- 와일드카드 인증서 발급이 불가능합니다.
- ISP나 방화벽에 의해 포트 80이 차단된 경우 사용이 어렵습니다.
2. DNS-01 Challenge
- 도메인의 DNS 설정에 특정 TXT 레코드를 추가하여 도메인 소유권을 증명하는 방식입니다.
- 요구사항:
- DNS 설정을 변경할 수 있는 권한이 있어야 합니다.
- DNS 변경 사항이 전파되기까지 시간이 소요될 수 있습니다.
- 장점:
- 와일드카드 인증서 발급이 가능합니다.
- 웹 서버가 없어도 인증이 가능합니다.
- 단점:
- 설정이 복잡하며 자동화를 위해 DNS 제공업체의 API 지원이 필요할 수 있습니다.
- DNS 변경 사항의 전파 시간을 고려해야 합니다.
3. TLS-ALPN-01 Challenge
- TLS의 ALPN 확장을 사용하여 도메인 소유권을 증명하는 방식입니다.
- 요구사항:
- 포트 443에서 TLS 연결을 처리할 수 있어야 합니다.
- 특정 ALPN 프로토콜을 지원하는 서버 설정이 필요합니다.
- 장점:
- HTTP를 사용하지 않고도 인증이 가능합니다.
- 일부 보안 요구사항을 만족시킬 수 있습니다.
- 단점:
- 설정이 복잡하며 일반적인 웹 서버 환경에서는 사용이 제한적일 수 있습니다.
- 와일드카드 인증서 발급이 불가능합니다.
❗️와일드카드 인증서 발급 시 DNS-01 Challenge만 가능한 이유
와일드카드 인증서(*.example.com)는 모든 하위 도메인에 대한 인증서를 한 번에 발급받을 수 있는 방식입니다. Let’s Encrypt에서는 보안상의 이유로 와일드카드 인증서 발급 시 DNS-01 Challenge만을 허용합니다.
이유:
- HTTP-01이나 TLS-ALPN-01 방식은 특정 서브도메인에 대한 소유권만을 증명할 수 있습니다.
- 와일드카드 인증서는 모든 하위 도메인에 대한 소유권을 증명해야 하므로, DNS 수준에서의 인증이 필요합니다.
따라서, 와일드카드 인증서를 발급받기 위해서는 _acme-challenge.example.com에 특정 TXT 레코드를 추가하여 DNS-01 Challenge를 완료해야 합니다.
📊 인증방식 비교
인증 방식 | 포트 요구사항 | 와일드카드 지원 | 자동화 용이성 | 주요 특징 |
---|
HTTP-01 | 80 | ❌ | ✅ 쉬움 | 웹 서버에 파일 생성으로 인증 수행 |
DNS-01 | 없음 | ✅ | ⚠️ 중간 (API 필요) | DNS에 TXT 레코드 추가로 인증 |
TLS-ALPN-01 | 443 | ❌ | ⚠️ 복잡 | TLS 핸드셰이크로 인증 수행 |
✅ 결론 및 권장 사항
- 일반적인 웹 서버 환경: HTTP-01 Challenge를 사용하는 것이 간단하고 효율적
- 와일드카드 인증서 필요: DNS-01 Challenge를 사용해야 하며, DNS 제공업체의 API를 활용한 자동화를 고려해야함
- 특수한 보안 요구사항: TLS-ALPN-01 Challenge를 사용할 수 있으나, 설정이 복잡하므로 충분한 검토가 필요
각 인증 방식의 특성과 요구사항을 고려하여, 자신의 환경에 가장 적합한 방법을 선택하시기 바랍니다.