TLSA 레코드 생성기 (DANE)와 검사기
인증서를 TLSA 레코드로 바꿉니다. 셀렉터와 매칭 종류 전부를 보여 주고, 이미 게시한 레코드가 지금 서비스하는 인증서와 맞는지 확인합니다.
사용법
- 인증서를 붙여 넣으세요. PEM이 보통이고 원시 DER을 hex나 base64로 붙여도 됩니다. 인증서만 읽습니다. TLSA 레코드에는 개인키가 전혀 필요 없고, 아무것도 업로드되지 않습니다.
- 포트, 프로토콜, 호스트로 소유자 이름을 설정하세요. TLSA 레코드는 example.com이 아니라 _443._tcp.example.com에 놓입니다. 이름만 쓰는 것이 레코드가 아예 발견되지 않는 가장 흔한 이유입니다.
- 용도, 셀렉터, 매칭 종류를 고르세요. 이유가 없다면 3 1 1입니다. 아래 표가 모든 조합을 한 번에 보여 주므로 셀렉터가 바뀔 때 무엇이 달라지는지 볼 수 있습니다.
- 운영 중인 배포를 디버깅하려면 게시한 레코드를 검사 칸에 붙여 넣으세요. 이 인증서와 맞는지, 어느 셀렉터·매칭 종류로 맞는지 알려 줍니다.
자세한 설명
펼치기접기
TLSA 레코드는 인증서나 공개키를 DNS에 고정합니다. 그것이 DANE입니다. 수백 개 인증 기관 가운데 어쩌다 내 이름에 서명해 준 곳을 믿는 대신, 클라이언트가 DNSSEC으로 레코드를 가져와 인증서가 그것과 일치하도록 요구합니다. 이 페이지는 인증서를 받아 셀렉터와 매칭 종류의 모든 조합에 대한 연관 데이터를 계산하고, 소유자 이름과 함께 레코드를 내보내며, 실제로 가장 많이 쓰이는 기능으로 이미 게시한 레코드가 지금 서비스 중인 것과 여전히 맞는지 알려 줍니다.
숫자 세 개가 레코드의 의미를 정합니다. 용도는 인증서가 누구의 권위에 기대는지 말합니다. 0과 1은 PKIX로, 레코드와 일치하는 것에 더해 공개 CA 체계로도 검증되어야 하므로 자체 서명 인증서는 실패합니다. 2와 3은 DANE이고 스스로 섭니다. 셀렉터는 무엇을 일치시키는지 — 인증서 전체인지 SubjectPublicKeyInfo만인지 — 를 말합니다. 매칭 종류는 어떻게 일치시키는지, 즉 SHA-256인지 SHA-512인지 바이트 자체인지를 말합니다.
거의 모든 배포에서 답은 3 1 1이고, 이유는 암호학이 아니라 운영입니다. 셀렉터 1은 인증서가 아니라 공개키를 일치시키므로, 같은 키를 재사용한 갱신은 같은 연관 데이터를 만들고 DNS 레코드를 바꿀 필요가 없습니다. 셀렉터 0은 인증서를 일치시키므로 날짜만 바뀐 갱신에도 레코드가 무효가 되는데, 오래된 레코드는 보호 없는 상태로 내려앉지 않습니다. DANE을 아는 클라이언트는 연결을 거부합니다. DANE 장애는 대부분 정확히 이것입니다.
SubjectPublicKeyInfo를 꺼내는 일은 도구가 은근히 틀릴 수 있는 단계인데, 고정된 위치에 있지 않기 때문입니다. 인증서는 SEQUENCE이고 그 첫 원소가 TBSCertificate이며, 그것 역시 SEQUENCE로서 선택적 명시 버전 다음에 일련번호, 서명 알고리즘, 발급자, 유효 기간, 주체가 오고 그다음이 공개키입니다. 버전은 선택적이고 기본값이 v1이라 키는 그 다음 여섯 번째 필드이거나 처음부터 여섯 번째입니다. 그래서 이 페이지는 바이트를 세지 않고 구조를 걸어가며, RSA와 P-256·P-384, Ed25519에 대해 openssl 명령줄과 대조해 검증했습니다.
TLSA가 수고할 값이 있는 곳은 SMTP입니다. RFC 7672는 보내는 메일 서버가 TLS를 강제할지와 어떤 인증서를 받아들일지 결정하는 방식으로 DANE을 정하고, 실제로 널리 배포되어 있습니다. 브라우저 주소창에 해당하는 것이 SMTP에는 없으므로, 받는 서버를 인증할 수 있게 해 주는 것이 이것입니다. HTTPS에서는 주요 브라우저가 DANE 검증을 출시한 적이 없어서, HTTPS TLSA 레코드는 강제하는 것이 아니라 의도를 문서화하는 것입니다.
이 페이지가 검사하지 않는 것은 인증서 밖의 모든 것입니다. DNS를 조회하지 않으므로 레코드가 게시되었는지, 존이 서명되었는지, 부모가 DS를 가지고 있는지 알려 줄 수 없습니다. DNSSEC 없이는 TLSA 레코드는 공격자가 고쳐 쓸 수 있는 조언일 뿐입니다. 인증서 날짜도 검사하지 않습니다. 둘 다 계산이 아니라 배포에 속하는 문제입니다.
자주 묻는 질문
용도, 셀렉터, 매칭 종류는 무엇을 써야 하나요?
거의 전부 3 1 1입니다. 용도 3(DANE-EE)은 레코드가 그렇게 말하므로 인증서를 믿는다는 뜻이어서 자체 서명이나 사설 CA 인증서에도 동작하고 공개 CA 체계에 의존하지 않습니다. 셀렉터 1은 공개키를 일치시키므로 키를 유지한 갱신에는 DNS 변경이 필요 없습니다. 매칭 종류 1은 SHA-256으로 모든 구현이 지원합니다. RFC 7671 5.1절도 같은 말을 합니다.
인증서를 갱신하면 레코드가 왜 동작을 멈추나요?
인증서 전체를 일치시키는 셀렉터 0을 썼기 때문입니다. 갱신은 무엇이든 인증서를 바꿉니다. 최소한 유효 기간과 일련번호가 바뀌므로 키가 같아도 다이제스트가 달라집니다. 셀렉터 1로 바꾸고 갱신 사이에 키를 재사용하면 레코드가 유효하게 남습니다. 꼭 셀렉터 0을 써야 한다면 겹치는 기간에 옛 레코드와 새 레코드를 함께 게시하세요. 한 이름에 여러 TLSA 레코드를 두는 것은 허용되고, 클라이언트는 그중 하나와 맞으면 받아들입니다.
TLSA가 무언가를 하려면 DNSSEC이 필요한가요?
완전히 필요합니다. 서명되지 않은 TLSA 레코드는 연결을 공격하는 쪽이 중간에서 바꿔치기할 수 있어서 쓸모없는 정도가 아니라 더 나쁩니다. 공격자가 고른 인증서를 믿으라고 클라이언트에게 말하는 셈입니다. DANE은 DNSSEC으로 검증되는 것으로 정의되어 있고, 이를 구현한 클라이언트는 서명되지 않은 레코드를 무시합니다. 여기에 의존하기 전에 존을 서명하고 부모에 DS를 게시하세요.
브라우저가 TLSA를 쓰나요?
쓰지 않습니다. 주요 브라우저 가운데 DANE 검증을 출시한 것은 없고, 몇몇은 명시적으로 거절했습니다. 모든 연결에 DNSSEC 의존성을 더한다는 이유가 큽니다. DANE이 실제로 배포된 곳은 RFC 7672에 따른 SMTP입니다. 서명된 TLSA 레코드를 찾은 보내는 메일 서버는 TLS를 요구하고 인증서를 그것과 대조하는데, 받는 메일 서버를 인증하는 폭넓게 배포된 유일한 방법입니다.
SubjectPublicKeyInfo 다이제스트가 다른 도구와 왜 다른가요?
그 도구가 무엇을 해시했는지 확인하세요. TLSA 셀렉터 1의 본문은 SubjectPublicKeyInfo 전체입니다. 키 비트뿐 아니라 알고리즘 식별자와 그 파라미터까지 포함하며, 맨 공개키도 키 모듈러스도 아닙니다. openssl이 x509 -pubkey로 출력하고 pkey -pubin -outform der로 변환하는 바로 그 구조이고, 이 페이지가 대조해 검증한 대상도 정확히 그것입니다. HPKP 식 핀도 같은 본문을 썼기 때문에 그 값들은 일치합니다. 원시 모듈러스 지문은 일치하지 않습니다.
관련 도구
CAA 레코드 빌더 (DNS 인증 기관 권한 제한)
CAA (Certificate Authority Authorization) DNS 레코드 생성 — 신뢰하는 CA만 도메인의 TLS 인증서를 발급할 수 있도록 제한.
네트워크
DKIM 레코드 빌더 & 파서
DKIM DNS TXT 레코드를 만들거나 분석 — 공개키와 selector·키 타입·해시·플래그를 넣으면 전체 레코드와 255자 초과용 청크 버전까지 나옵니다.
네트워크
SVCB / HTTPS 레코드 생성·해독기
SVCB·HTTPS 레코드를 정규화·인코딩·검사합니다. SvcParams 해독, 와이어 바이트 분해, 그리고 위반한 RFC 9460 조항을 이름으로 지적합니다.
네트워크
DNSSEC 계산기 — DS 레코드와 NSEC3 해시
DNSKEY를 등록기관이 요구하는 DS 레코드로 바꿉니다. 키 태그와 세 가지 다이제스트 종류 전부, 또는 NSEC3 방식으로 이름을 해시합니다.
네트워크
TXT 레코드 분할기 (255바이트 청크)
긴 SPF·DKIM·DMARC TXT 레코드를 DNS 프로토콜이 요구하는 255바이트 청크로 분할 — BIND·일반 zone 파일·Cloudflare·Route 53 문법 출력.
네트워크
DNS 존 파일 검사기
BIND 존 파일을 붙여넣으면 실제 의미를 보여줍니다. 모든 이름을 완전한 형태로 펼치고 SOA를 해설하며 파서만으로는 드러나지 않는 함정을 짚어 줍니다.
네트워크