CAA 레코드
CAA 레코드는 이 도메인의 인증서를 발급할 수 있는 인증기관을 제한하는 DNS 레코드입니다. 인증기관은 발급 직전에 이 레코드를 확인해야 합니다.
작성 최종 수정
CAA 레코드(Certification Authority Authorization record)는 이 도메인의 SSL/TLS 인증서를 발급할 수 있는 인증기관이 어디인지 도메인 소유자가 지정해 두는 DNS 레코드입니다. RFC 8659로 표준화된 레코드이고, 인증기관은 인증서를 발급하기 직전에 대상 도메인의 CAA를 조회해야 하며 자기 이름이 목록에 없으면 발급을 거부해야 합니다. 즉 도메인 소유 확인을 통과한 공격자가 아무 인증기관에서나 우리 도메인 인증서를 받아 가는 길을 좁히는 장치입니다.
레코드를 넣는 곳은 도메인을 등록한 업체가 아니라 지금 그 도메인이 위임된 네임서버의 DNS 콘솔입니다. 레토 DNS는 CAA 레코드를 지원하지 않습니다. 대시보드에서 고를 수 있는 타입은 A, AAAA, CNAME, MX, NS, SRV, TXT 일곱 가지이므로, CAA가 필요한 도메인은 그 존을 CAA를 지원하는 외부 DNS 호스팅으로 위임하고 그쪽 콘솔에서 넣어야 합니다.
태그 세 가지
example.co.kr. 3600 IN CAA 0 issue "ca.example"
example.co.kr. 3600 IN CAA 0 issuewild ";"
example.co.kr. 3600 IN CAA 0 iodef "mailto:security@example.co.kr"
값은 플래그 숫자, 태그, 그리고 따옴표로 감싼 내용으로 이루어집니다.
| 태그 | 뜻 |
|---|---|
issue | 일반 인증서를 발급할 수 있는 인증기관. 여러 개를 나열할 수 있습니다 |
issuewild | 와일드카드 인증서에만 적용되는 허용 목록 |
iodef | 규칙을 어긴 발급 시도를 알릴 연락처. 주소 또는 신고 접수 URL |
앞의 숫자는 플래그이고 보통 0입니다. 1로 두면 그 태그를 이해하지 못하는 인증기관은 발급을 포기해야 한다는 뜻이 됩니다.
내용 자리에 세미콜론 하나만 두면 "아무도 발급할 수 없다"는 선언입니다. 와일드카드를 쓰지 않는 도메인이라면 issuewild 를 세미콜론으로 막아 두는 구성을 흔히 씁니다. issuewild 가 없으면 와일드카드 발급에도 issue 목록이 그대로 적용됩니다.
어떻게 검사되는가
인증기관은 발급 대상 이름에서 출발해 상위 이름으로 한 단계씩 올라가며 CAA를 찾습니다. www.example.co.kr 인증서라면 www.example.co.kr, 그다음 example.co.kr 순으로 찾고, 처음 발견한 레코드만 적용합니다. 상위에 있는 목록과 합쳐지지 않으므로, 특정 서브도메인에 CAA를 두면 루트 도메인의 설정은 그 이름에 대해서는 무시됩니다.
검사 시점은 발급 순간뿐입니다. 이미 발급되어 사용 중인 인증서는 CAA를 바꿔도 유효하고, 브라우저는 접속할 때 CAA를 확인하지 않습니다. 따라서 CAA는 유출된 인증서를 무효화하는 수단이 아니라 새 발급을 통제하는 수단입니다.
갱신 실패를 부르는 설정
- 인증기관 식별자는 회사 이름이 아니라 그 기관이 공개한 도메인 문자열을 그대로 적어야 합니다. 한 글자만 달라도 불일치로 처리됩니다.
- 여러 기관을 쓰거나 옮기는 중이라면
issue를 여러 줄 두어 양쪽을 모두 허용한 뒤, 전환이 끝나고 정리합니다. - CDN이나 로드밸런서가 인증서를 대신 발급하는 구성이라면 그 서비스가 쓰는 인증기관도 목록에 있어야 합니다.
iodef에 적은 주소로는 실제 알림이 오지 않는 경우도 많습니다. 이것만 믿고 만료 감시를 대체하지는 않습니다.
작성 절차는 CAA 레코드 설정, 적용 중 생기는 오류는 SSL 오류 해결에서 다룹니다.
자주 묻는 질문
없는 상태가 기본값이고, 그 경우 어떤 인증기관이든 도메인 소유 확인만 통과하면 발급할 수 있습니다. 당장 위험한 것은 아니지만, 쓰는 인증기관이 정해져 있다면 CAA로 나머지를 막아 두는 편이 사칭 발급 위험을 줄입니다.
아닙니다. CAA는 발급 시점에만 검사되므로 이미 발급된 인증서에는 영향이 없습니다. 다만 다음 갱신 때 그 인증기관이 목록에 없으면 발급이 거부되니, 현재 쓰는 기관을 반드시 목록에 포함해야 합니다.
보통은 루트 도메인에만 두면 됩니다. 인증기관은 대상 이름에서 시작해 상위로 올라가며 CAA를 찾고, 처음 발견한 레코드를 적용합니다. 특정 서브도메인만 다른 기관을 쓰게 하려면 그 이름에 따로 둡니다.
관련 가이드
- CAA 레코드로 인증서 발급 제한하기CAA 레코드는 어느 인증기관이 이 도메인의 SSL 인증서를 발급할 수 있는지 DNS에 적어 두는 레코드입니다. issue, issuewild, iodef 태그의 의미와 여러 기관을 함께 쓰는 방법, 갱신 실패를 피하는 점검 순서를 정리했습니다.
- SSL 인증서 적용하기사이트에 HTTPS를 켜기 위한 SSL/TLS 인증서 적용 방법입니다. 도메인 소유 검증 방식, 무료 자동 발급 인증서, 와일드카드 인증서, 갱신과 만료 모니터링, CAA 레코드까지 순서대로 정리했습니다.
- SSL 인증서 오류가 뜰 때브라우저가 띄우는 인증서 오류는 문구마다 원인이 다릅니다. 만료, 이름 불일치, 체인 불완전, 신뢰하지 않는 발급자, 혼합 콘텐츠를 구분하고 openssl s_client 로 실제 상태를 확인하는 방법을 정리했습니다.