🔐 CAA 레코드
CAA(Certification Authority Authorization)는 어떤 인증 기관이 SSL/TLS 인증서 발급을 허용받는지 DNS로 선언하는 메커니즘입니다. 오발급 위험 감소에 효과적입니다. issue / issuewild / iodef 세 가지 태그를 표시합니다.
완전 무료
가입 불필요
서버 처리
로그 · DB 없음
레이트 리밋
5 개 언어
다크 모드
📖 이 진단으로 알 수 있는 것
CAA 레코드는 이 도메인의 인증서를 발급해도 되는 인증 기관은 여기뿐이라고 DNS 로 선언하는 것입니다. CA/Browser Forum 의 Baseline Requirements 에 따라 인증 기관은 발급 직전에 반드시 CAA 를 확인할 의무가 있습니다. 이 진단은 그 레코드와 상속원이 되는 상위 도메인의 CAA 를 가져옵니다. 다만 이미 발급된 인증서를 취소하는 효과는 없습니다. 오발급 탐지는 CT 로그의 몫입니다.
| 판정 항목 | 무엇을 보는가 | 걸렸을 때의 대처 |
|---|---|---|
| CAA 레코드가 없음 | 없는 것이 오류는 아니지만 의미는 전 세계 어떤 인증 기관이 발급해도 상관없다입니다. 도메인 관리자가 의도하지 않은 CA 에서 인증서가 나와도 구조적으로 막히지 않습니다. 반대로 말하면 CAA 를 한 줄 쓰는 것만으로 발급 가능한 CA 를 좁힐 수 있습니다. | 사용하는 CA 의 식별자를 정확히 씁니다. example.com. IN CAA 0 issue "letsencrypt.org" 같은 형태입니다. 식별자를 틀리면 다음 갱신이 조용히 실패하고 인증서가 만료됩니다. 주요한 것은 letsencrypt.org / digicert.com / sectigo.com / pki.goog / amazon.com 이며 반드시 각 CA 공식 문서에서 확인하세요. |
| issuewild 를 지정하지 않음 | issuewild 가 없을 때는 issue 의 내용이 와일드카드 인증서에도 적용됩니다. 즉 issue 를 허용한 CA 는 *.example.com 도 발급할 수 있습니다. 와일드카드 인증서는 한 장만 유출되어도 모든 서브도메인이 위장되므로 필요하지 않다면 명시적으로 금지할 가치가 있습니다. |
와일드카드를 쓰지 않는다면 example.com. IN CAA 0 issuewild ";" 라고 씁니다. 세미콜론 하나가 어떤 CA 에도 허가하지 않음을 뜻합니다. 특정 CA 에만 허용하려면 0 issuewild "digicert.com" 처럼 씁니다. |
| 상위 도메인의 CAA 가 적용됨 | CAA 는 질의한 이름에 없으면 찾을 때까지 상위로 거슬러 올라갑니다. shop.example.com 에 CAA 가 없으면 example.com 의 것이 적용됩니다. 이 상속 때문에 서브도메인만 다른 CA 를 쓰고 싶은데 발급되지 않는 식으로 막힙니다. |
서브도메인에서 다른 CA 를 쓰려면 그 서브도메인 자체에 CAA 를 둡니다(자식에 하나라도 있으면 부모는 보지 않습니다). 인증서 취득이 CAA record prevents issuance 로 실패하면 먼저 이 상속을 의심하세요. DNS 에서 CNAME 을 걸어 둔 경우 CNAME 대상의 이름으로 CAA 가 평가되는 점도 주의가 필요합니다. |
CAA 의 내용 자체는 DNS 로 평문 배포되므로 DNS 를 위조할 수 있는 공격자는 CAA 도 위조할 수 있습니다. 실효적인 방어로 만들려면 DNSSEC 과 함께 쓰세요. 또 CAA 는 발행시키지 않는 구조이지 오발급을 알아채는 구조가 아닙니다. 실제로 자기 도메인명으로 발급된 인증서를 감시하려면 Certificate Transparency 로그를 구독하는 것(crt.sh 감시나 Cert Spotter 같은 알림 서비스)이 유일하게 확실한 방법입니다.