ASN.1 / DER 디코더
인증서에는 전용 뷰어가 있지만 DER로 인코딩된 나머지에는 없습니다. 인증서 서명 요청(CSR), PKCS#8 키, PKCS#7 번들, OCSP 응답, 타임스탬프 토큰 같은 것들이죠. 이들은 속을 보면 모두 같은 모양입니다. 길이가 명시된 태그 값들이 중첩된 구조요. 이 도구는 그 모양을 어떤 것에 대해서든 보여줍니다. 각 노드는 시작 위치, 헤더 길이, 내용 바이트 수, 그리고 constructed인지 primitive인지를 알려줍니다. 구조적 문제가 눈에 보이게 되는 지점이 바로 이것입니다. 부모를 넘어서는 길이, 최상위 값 뒤에 남은 바이트, DER에는 있어선 안 될 부정 길이 — 바이트가 친절한 이름으로 바뀌고 나면 어느 것도 드러나지 않지만, 멀쩡해 보이는 파일을 라이브러리가 거부하는 이유는 대개 이것들입니다. primitive는 덤프가 아니라 해석해서 보여줍니다. 잘 알려진 객체 식별자는 이름을 붙이고, 문자열은 태그가 정한 문자 집합으로 디코딩하며, 정수는 전체를 표시하고, BIT STRING은 패딩을 알려줍니다. 안에 또 DER이 들어 있는 OCTET STRING은 — 인증서 확장과 키 데이터가 그렇게 실립니다 — 표시해 두고 그 자리에서 펼칠 수 있습니다. 업로드되는 것은 없습니다. 이런 데이터는 인증서만큼이나 자주 키이기 때문에 중요한 부분입니다.
인증서 확장과 키 데이터는 문자열 안에 또 다른 구조를 담습니다. 이 옵션이 그 자리에서 열어줍니다.
모든 해석은 브라우저에서 이뤄지고 어디로도 전송되지 않습니다. 그래도 개인키는 로컬 도구로 보는 편이 낫습니다.
PEM 블록이나 base64, hex를 붙여넣으면 해석됩니다.
사용법
- PEM 블록이나 base64, hex를 붙여넣거나 .der 파일을 끌어다 놓으세요.
- 트리를 읽으세요. 오프셋, 헤더 길이, 내용 길이, 태그, 값이 표시됩니다.
- 확장 옵션을 켜면 OCTET·BIT STRING 안에 숨은 DER이 열립니다.
- 남은 바이트 안내를 확인하세요. 파일에 구조가 하나 이상 있다는 뜻입니다.
- 다른 도구의 출력과 비교하려면 목록을 복사하세요.
자주 묻는 질문
- 인증서 디코더와 뭐가 다른가요?
- 인증서 디코더는 X.509 인증서의 의미(주체, 만료, 대체 이름)를 이해합니다. 이 도구는 인코딩만 이해합니다. 그래서 CSR이든 키든 PKCS#7 번들이든 DER이기만 하면 동작하고, 필드 이름 대신 오프셋과 길이를 보여줍니다.
- 각 줄 앞의 숫자는 무엇인가요?
- 파일 안에서 그 값이 시작하는 오프셋, 그다음 헤더 길이와 내용 길이입니다. 이 셋이면 hex 덤프에서 어떤 노드든 찾을 수 있고, 부모 안에 들어가지 않는 길이를 잡아내는 것도 이것으로 합니다.
- OCTET STRING에 'DER 포함'이라고 표시되는 이유는요?
- 그 내용을 DER로 파싱했을 때 정확히 다 소비됐기 때문입니다. 대개 안에 또 다른 구조가 중첩돼 있다는 뜻이고, 인증서 확장과 키 자료가 그렇게 실립니다. 그래도 추측이라서 단정하지 않고 표시만 하며, 펼치는 것은 선택입니다.
- 부정 길이(indefinite)는 무슨 뜻인가요?
- 크기를 밝히는 대신 end-of-contents 표시가 나올 때까지 값이 이어진다는 뜻입니다. BER은 허용하지만 DER은 허용하지 않습니다. DER이어야 할 것에서 이게 보이면, 엄격한 파서가 파일을 거부한 이유가 대개 그것입니다.
- 개인키를 붙여넣어도 되나요?
- 개인키도 DER이니 구조는 해석되고, 업로드되지도 않습니다. 그래도 개인키는 로컬 도구로 보는 편이 낫습니다. 웹 페이지에 키를 붙여넣는 습관이 결국 유출로 이어지니까요.
- 값이 검증되기도 하나요?
- 아니요. 이 도구는 의미가 아니라 인코딩을 읽습니다. 서명이나 체인, 만료일을 확인하지 않습니다. 바이트가 무엇이라고 말하는지를 보여줄 뿐입니다.
관련 도구
MessagePack 디코더
base64나 hex로 된 MessagePack 바이트를 붙여넣으면 타입, 중첩 맵, 바이너리, 타임스탬프까지 브라우저에서 해석합니다.
JWT 디코더
JWT의 헤더·클레임·만료를 즉시 확인하세요.
Protobuf 디코더 (.proto 없이)
base64나 hex로 된 protobuf 바이트를 붙여넣으면 스키마 없이 필드 번호, 와이어 타입, 중첩 메시지, 문자열, packed 배열을 읽어줍니다.
Base64 인코더 / 디코더
텍스트를 Base64로 인코딩하거나 다시 텍스트로 디코딩하세요.
Quoted-Printable 인코더 & 디코더
텍스트를 MIME Quoted-Printable(RFC 2045)로 인코딩하거나 다시 디코딩 — =XX 이스케이프·소프트 줄바꿈·UTF-8 처리, 인코딩 시 76자 줄바꿈 — 브라우저에서.
URL 인코더 / 디코더
URL용으로 텍스트를 퍼센트 인코딩하거나, 인코딩된 URL을 디코딩하세요.