CRL 디코더 (X.509)
X.509 인증서 폐기 목록을 DER이든 PEM이든 해석해서 클라이언트가 보는 내용을 그대로 보여 줍니다. 개요에는 버전, 서명 알고리즘, CRL 번호, thisUpdate와 nextUpdate 구간, 아직 유효한지 여부, 그리고 전체 목록인지 기준 CRL 이후의 변경만 담은 델타인지가 나옵니다. 그 아래에는 발급자 이름, 목록을 특정 CA 키에 묶는 발급자 키 식별자, 이 목록이 어떤 인증서에 대해 말할 수 있는지를 정하는 발행 배포 지점이 나옵니다. 폐기 항목마다 일련번호, 폐기 시각, CA가 기록한 사유, 그리고 더 중요한 무효 시점을 보여 줍니다. revocationDate는 CA가 조치한 시각이고 invalidityDate는 키가 유출된 것으로 보는 시각이라, 그 사이가 서명을 믿으면 안 되는 구간입니다. 발급 CA 인증서를 붙여넣으면 WebCrypto로 서명을 검증합니다. RSA와 ECDSA를 지원하며, 애초에 그 서명을 만들 수 없는 종류의 키라면 '확인 불가'가 아니라 불일치로 알려 줍니다. 주의할 점 둘. 일련번호가 여기 있다는 사실은 이 목록이 그 인증서에 맞는 목록일 때만 의미가 있고, 그것은 발급자와 배포 지점이 말해 줍니다. 그리고 수십만 건짜리 큰 CRL도 건수는 전부 세지만 화면에는 500행만 그립니다. 나머지를 그리면 탭이 멈출 뿐 더 알려 주는 것이 없기 때문입니다.
사용법
- .crl 파일을 상자에 놓거나 PEM 목록을 붙여넣으세요. .crl은 원시 DER이라 텍스트 편집기로는 열리지 않습니다.
- 유효 구간부터 확인하세요. nextUpdate가 지난 목록은 오래된 것이고, 대부분의 클라이언트는 그냥 신뢰하는 대신 거부합니다.
- CRL 번호와 범위를 보세요. 델타 CRL은 명시된 기준 번호 이후의 변경만 담으므로 그것만으로는 전체가 아닙니다.
- 표에서 일련번호를 찾고 옆의 사유를 읽으세요. certificateHold는 해제 가능한 일시 정지이고 나머지는 영구입니다.
- 완전히 통제하지 않는 곳에서 받은 목록이라면 발급 CA 인증서를 붙여넣어 서명을 검증하세요.
자주 묻는 질문
- 폐기 시각과 무효 시점은 어떻게 다른가요?
- 폐기 시각은 CA가 그 사실을 공표한 때이고, 선택 항목인 무효 시점은 인증서가 실제로 믿을 수 없게 된 때로 보통 키가 유출된 시각입니다. 유출은 며칠 뒤에 발견되는 일이 흔해서 둘이 크게 벌어질 수 있습니다. 오래된 서명을 판단할 때 중요합니다. 무효 시점 이전에 만들어진 서명은 여전히 받아들일 만하고 이후 것은 아닌데, 둘 다 폐기 시각보다는 앞설 수 있기 때문입니다.
- certificateHold라고 나옵니다. 이 인증서는 폐기된 건가요?
- 폐기가 아니라 일시 정지입니다. certificateHold는 되돌릴 수 있는 유일한 사유입니다. 나중 CRL이 같은 일련번호를 removeFromCRL 사유로 실으면 정지가 풀리고 인증서가 다시 살아납니다. 그래서 클라이언트는 keyCompromise처럼 영구적인 것으로 캐시할 수 없습니다. 공개 CA는 거의 쓰지 않으므로 이 값이 보이면 대개 사설이나 사내 PKI입니다.
- 델타 CRL은 무엇이고 그것만으로 써도 되나요?
- 안 됩니다. 델타는 Delta CRL Indicator 확장에 적힌 특정 기준 CRL 이후의 변경만 담고, 그 기준 위에 얹어서 쓰라고 만든 것입니다. 큰 CA의 전체 목록은 매우 커질 수 있어서 몇 건만 바뀌는데 매시간 전체를 다시 받는 것이 낭비이기 때문에 존재합니다. 이 도구가 델타라고 표시하면, 보이는 항목은 최근 변경분이지 폐기된 일련번호 전체가 아닙니다.
- 일련번호가 없으면 그 인증서는 정상인가요?
- 이 목록이 맞는 목록이고, 아직 유효하고, 그 인증서가 이 CA가 발급한 것일 때만 그렇습니다. CRL은 정해진 범위에 대해서만 말합니다. 발급자 이름과, 있다면 발행 배포 지점이 그 범위를 제한합니다. 무관한 CA의 목록에 없다는 사실은 아무것도 말해 주지 않습니다. 신선해야 하기도 합니다. 만료된 목록은 찾고 있는 폐기보다 앞선 것일 수 있고, 클라이언트가 오래된 목록을 그냥 읽지 않고 거부하는 이유가 바로 이것입니다.
- 서명은 어떻게 확인하고, 실패는 무엇을 뜻하나요?
- 목록의 서명 대상 부분을 붙여넣은 인증서의 공개키로, 목록이 명시한 알고리즘(RSA PKCS#1 v1.5 또는 ECDSA)에 맞춰 브라우저 WebCrypto로 검증합니다. 통과하면 그 CA 키가 실제로 이 바이트에 서명했고 변조가 없다는 뜻입니다. 실패는 목록이 수정되었거나 붙여넣은 인증서가 발급자가 아니라는 뜻입니다. 키 종류상 애초에 그 서명을 만들 수 없다면 '지원하지 않는 알고리즘'이 아니라 불일치로 알려 줍니다.
- 파일이 어딘가로 업로드되나요?
- 아닙니다. 목록도 붙여넣은 인증서도 페이지 안에서 읽고 해석하며, 서명 검증도 브라우저 자체 WebCrypto로 실행합니다. 서버로 보내지 않고 보낼 서버 쪽 구성 요소도 없습니다. 폐기 목록은 공개 정보이지만 사설 PKI의 것은 그렇지 않을 수 있고, 전부 클라이언트에서 도는 이유가 그것입니다.
관련 도구
SSL 인증서 디코더 (X.509 / PEM)
PEM 인증서를 붙여넣으면 주체, 발급자, 만료일, SAN, 키, 지문, 확장을 브라우저에서 바로 읽어줍니다.
CSR 디코더 (PKCS#10)
인증서 서명 요청을 보내기 전에 확인합니다. 주체, SAN, 키 길이, 서명 알고리즘, 그리고 자체 서명이 검증되는지까지.
OCSP 응답·요청 디코더
OCSP 응답과 요청을 브라우저에서 해석합니다. 상태, 응답기, 신선도, 논스, 폐기 사유, 동봉된 인증서까지 보여줍니다.
PKCS#12 키스토어 분석기
.p12/.pfx를 브라우저에서 엽니다. 비밀번호 없이 MAC과 암호 알고리즘을, 입력 후에는 인증서 체인·개인 키·키 일치 여부를 보여줍니다.
포트 번호 참조
약 60개 표준 TCP / UDP 포트 번호 검색 가능한 치트시트 — 22(SSH)·80(HTTP)·6379(Redis)·27017(MongoDB) 등.
NumPy .npy / .npz 검사기
.npy·.npz 헤더를 브라우저에서 읽습니다. dtype, shape, 바이트 순서, 필드 배치와 값 미리보기까지. NumPy 설치도 업로드도 필요 없습니다.