
CAA DNS 레코드로 SSL 인증서 발급 기관 제한하고 확인하는 방법
CAA DNS 레코드를 이용해 SSL 인증서 발급 기관을 제한하는 방법과 dig 명령어로 확인하는 절차를 소개합니다. 문법, DNS 공급자 적용, 오류 해결까지 단계별로 안내합니다.
CAA DNS 레코드를 추가하여 SSL 인증서를 발급할 수 있는 인증 기관을 제한할 수 있다. 레코드에는 허용할 CA의 도메인을 issue 태그로 지정하며, DNS 공급자 관리 화면에서 CAA 유형을 선택해 입력한다. 이후 dig 명령어나 온라인 DNS 조회 도구로 레코드가 정상 등록되었는지 확인하면 된다.
CAA 레코드의 개념과 필요성
CAA 레코드는 도메인 소유자가 자신의 도메인에 대해 인증서를 발급할 수 있는 인증 기관을 제한하는 DNS 리소스 레코드입니다. 이 레코드는 RFC 6844에 정의되어 있으며, 2017년 9월 8일부터 CA/Browser Forum에 의해 모든 공개 신뢰 CA의 인증서 발급 과정에서 CAA 확인이 의무화되었습니다.
CAA 레코드가 없는 도메인은 어떤 CA라도 도메인 제어 확인만 통과하면 인증서를 발급할 수 있습니다. 따라서 무단 발급 위험을 줄이기 위해 CAA 레코드 설정이 권장됩니다.
CAA 레코드 문법: 플래그, 태그, 값
CAA 레코드는 일반적으로 플래그, 태그, 값으로 구성됩니다.
- 플래그(flag): 대부분의 경우 0을 사용합니다. 128을 지정하면 중요(critical) 플래그로 인식되지만, 현재 널리 쓰이지는 않습니다.
- 태그(tag): 발급 유형을 지정하며,
issue(일반 인증서),issuewild(와일드카드 인증서),issuemail(S/MIME 인증서) 등이 있습니다. 가장 기본적인 것은issue입니다. - 값(value): 큰따옴표로 감싼 허용 CA의 도메인 식별자입니다. 예:
"letsencrypt.org"
한 도메인에 여러 개의 CAA 레코드를 등록할 수 있으며, CA는 왼쪽에서 오른쪽으로 검색하다가 첫 번째 CAA 레코드를 만나면 검사를 중단합니다. 따라서 특정 CA만 허용하고 나머지를 차단하려면 issue 태그에 허용할 CA만 나열하면 됩니다. 모든 CA를 차단하려면 값에 ";" (세미콜론만)을 지정합니다.
예시 레코드:
호스트: example.com
유형: CAA
플래그: 0
태그: issue
값: "letsencrypt.org"
CAA 레코드 추가 절차
CAA 레코드를 추가하는 구체적인 단계는 다음과 같습니다.
- DNS 공급자가 CAA 레코드를 지원하는지 확인합니다. 대부분의 주요 서비스(Cloudflare, DNSimple, Google Cloud DNS, AWS Route 53 등)는 지원합니다.
- DNS 관리 콘솔에 로그인하고 해당 도메인의 DNS 설정 영역으로 이동합니다.
- 새 레코드 추가 메뉴에서 유형으로 CAA를 선택합니다.
- 아래 필드를 입력합니다.
- 이름: 루트 도메인에는 보통
@또는 비워둡니다. 서브도메인이면 해당 서브도메인을 적습니다. - 플래그:
0 - 태그:
issue - 값:
"letsencrypt.org"(Let’s Encrypt만 허용하는 경우)
- 이름: 루트 도메인에는 보통
- TTL(Time To Live)은 기본값(예: 3600초)으로 두거나 필요에 따라 조정하고 저장합니다.
- 와일드카드 인증서를 허용하려면 태그를
issuewild로 하고 같은 값을 가진 레코드를 추가합니다. 예:0 issuewild "letsencrypt.org" - 추가로 허용할 CA가 있다면 3~5단계를 반복합니다. 예를 들어 Sectigo를 추가하려면 값에
"sectigo.com"을 넣습니다.
주의: S/MIME 인증서 발급을 제어하는 issuemail 태그는 비교적 새로 도입되었습니다. S/MIME 인증서에 대한 issuemail 태그는 2024년 9월 15일부터 적용이 권장되며 2025년 9월 15일까지 필수화될 예정입니다. 필요한 경우 미리 설정해둘 수 있습니다.
CAA 레코드 적용 확인 방법
레코드를 등록한 후에는 터미널에서 dig 명령어로 조회하여 반영 여부를 확인합니다.
dig CAA example.com
정상적으로 등록되었다면 ANSWER SECTION에 다음과 비슷한 출력이 나타납니다.
;; ANSWER SECTION:
example.com. 3600 IN CAA 0 issue "letsencrypt.org"
이 때, 레코드가 나타나지 않으면 DNS 전파가 아직 완료되지 않았거나 입력 오류일 가능성이 있습니다. 네임서버를 직접 지정하여 조회하는 방법도 유용합니다. 예를 들어 Cloudflare의 네임서버를 사용 중이라면 dig CAA example.com @1.1.1.1을 실행합니다.
또한, DNS 조회 웹 도구(whatsmydns.net 등)를 사용하면 여러 글로벌 네임서버에서의 전파 상태를 한눈에 확인할 수 있어 편리합니다.
CAA 유효성 검사는 CNAME을 따라갑니다. 즉, www.example.com이 example.com으로 CNAME 설정되어 있다면 CA는 example.com의 CAA 레코드를 기준으로 판단합니다. 따라서 별칭 도메인에도 인증서를 발급하려면 반드시 최종 대상 도메인의 CAA 레코드에서 해당 CA가 허용되어야 합니다. A 레코드와 CNAME의 차이와 선택 기준에 대한 자세한 내용은 DNS 레코드 A와 CNAME 차이와 선택 기준을 참고하세요.
CAA 오류 원인과 해결 방법
CA가 CAA 확인을 시도할 때 발생할 수 있는 주요 오류와 대처 방법은 다음과 같습니다.
타임아웃(Timeout) 방화벽이나 네트워크 장비가 알 수 없는 DNS 쿼리 유형(CAA는 유형 257)을 차단하거나 폐기할 때 발생합니다. 타임아웃은 일반적으로 방화벽이 알 수 없는 DNS 쿼리 유형을 차단할 때 발생합니다. 해결하려면 방화벽 설정을 확인하고 DNS 쿼리 유형 257을 명시적으로 허용하거나, 알 수 없는 유형에 대해 NOERROR 응답을 보내도록 조정합니다.
SERVFAIL 이 오류는 권한 있는 네임서버가 CAA 쿼리를 처리하지 못할 때 반환됩니다. 흔한 원인으로 DNSSEC가 활성화되지 않은 상태에서 네임서버가 NOTIMP(Not Implemented) 응답을 보내는 경우가 있습니다. SERVFAIL 오류는 DNSSEC가 활성화되지 않은 환경에서 권한 있는 네임서버가 CAA 쿼리에 대해 NOTIMP 응답을 반환할 때 자주 나타납니다. 이는 RFC 1035 위반에 해당하며, 네임서버 소프트웨어 업데이트나 교체가 필요합니다. DNSSEC 자체의 문제로 SERVFAIL이 발생할 수도 있으므로, DNSSEC 설정 확인 방법 4가지을 참고하여 점검해 보세요.
NOTIMP를 포함한 기타 응답 일부 저가형 DNS 호스팅이나 오래된 네임서버는 CAA 쿼리에 대해 NOERROR 대신 NOTIMP를 반환할 수 있습니다. 이 경우에도 CA는 CAA 확인을 실패한 것으로 간주합니다. DNS 공급자에게 CAA 레코드 유형 지원 여부를 문의하거나, 지원하는 곳으로 이전하는 것이 근본적인 해결책입니다.
CAA 레코드 설정 시 주의사항
CAA 레코드는 오직 인증서 발급을 제어할 뿐, 이미 발급되어 사용 중인 인증서에는 영향을 주지 않습니다. CAA 레코드는 신규 인증서 발급에만 영향을 미치며, 이미 발급된 기존 인증서는 CAA 레코드를 삭제하거나 CA를 제거해도 계속 유효합니다. 따라서 갑자기 CAA 레코드를 변경해도 사이트가 즉시 중단되지는 않습니다. 그러나 인증서 갱신 시점에는 반드시 CAA 레코드가 허용하는 CA로만 갱신 가능하므로, 갱신 전에 설정을 꼭 확인해야 합니다.
하나의 CA만 등록하고 다른 모든 CA를 배제하는 실수를 범하지 않도록 주의하십시오. 예를 들어 Let’s Encrypt만 허용하고 다른 CA는 등록하지 않으면, 해당 도메인에서는 Let’s Encrypt만 인증서를 발급할 수 있습니다. 만약 다른 CA(예: DigiCert)에서도 인증서를 받을 가능성이 있다면 해당 CA의 도메인을 추가로 등록해야 합니다. 특히 와일드카드 인증서를 발급받는다면 issuewild 태그로 해당 CA를 반드시 명시해야 합니다.
또한, 실수로 0 issue ";" 같은 레코드를 등록하면 어떤 CA도 인증서를 발급할 수 없습니다. 이 레코드는 “모든 CA 발급 금지”를 의미하므로, 필요하지 않다면 사용하지 마십시오.
마지막으로, 운영 중인 도메인의 CAA 레코드를 변경하기 전에 현행 설정을 백업해두고, 변경 후에는 반드시 위에서 설명한 확인 절차를 거쳐 의도한 CA가 정상적으로 허용되는지 검증하시기 바랍니다. 이 과정을 통해 무결성 있는 인증서 운영 환경을 유지할 수 있습니다.
참고 자료
- Let’s Encrypt - CAA — 확인일 2026-08-01
- SSL.com - 인증 기관 권한 부여 (CAA) — 확인일 2026-08-01
- Seqrite - CAA DNS 레코드를 사용하여 SSL 인증서를 보호하고 사이버 위협을 최소화하십시오 — 확인일 2026-08-01
- Connected.app - CAA 레코드 — 확인일 2026-08-01
- HTTP SSL - SSL 발급시 DNS CAA 레코드 삭제 필요 — 확인일 2026-08-01