본문으로 건너뛰기
AZ Tools

ASN.1 / DER 디코더

인증서에는 전용 뷰어가 있지만 DER로 인코딩된 나머지에는 없습니다. 인증서 서명 요청(CSR), PKCS#8 키, PKCS#7 번들, OCSP 응답, 타임스탬프 토큰 같은 것들이죠. 이들은 속을 보면 모두 같은 모양입니다. 길이가 명시된 태그 값들이 중첩된 구조요. 이 도구는 그 모양을 어떤 것에 대해서든 보여줍니다. 각 노드는 시작 위치, 헤더 길이, 내용 바이트 수, 그리고 constructed인지 primitive인지를 알려줍니다. 구조적 문제가 눈에 보이게 되는 지점이 바로 이것입니다. 부모를 넘어서는 길이, 최상위 값 뒤에 남은 바이트, DER에는 있어선 안 될 부정 길이 — 바이트가 친절한 이름으로 바뀌고 나면 어느 것도 드러나지 않지만, 멀쩡해 보이는 파일을 라이브러리가 거부하는 이유는 대개 이것들입니다. primitive는 덤프가 아니라 해석해서 보여줍니다. 잘 알려진 객체 식별자는 이름을 붙이고, 문자열은 태그가 정한 문자 집합으로 디코딩하며, 정수는 전체를 표시하고, BIT STRING은 패딩을 알려줍니다. 안에 또 DER이 들어 있는 OCTET STRING은 — 인증서 확장과 키 데이터가 그렇게 실립니다 — 표시해 두고 그 자리에서 펼칠 수 있습니다. 업로드되는 것은 없습니다. 이런 데이터는 인증서만큼이나 자주 키이기 때문에 중요한 부분입니다.

인증서 확장과 키 데이터는 문자열 안에 또 다른 구조를 담습니다. 이 옵션이 그 자리에서 열어줍니다.

모든 해석은 브라우저에서 이뤄지고 어디로도 전송되지 않습니다. 그래도 개인키는 로컬 도구로 보는 편이 낫습니다.

PEM 블록이나 base64, hex를 붙여넣으면 해석됩니다.

사용법

  1. PEM 블록이나 base64, hex를 붙여넣거나 .der 파일을 끌어다 놓으세요.
  2. 트리를 읽으세요. 오프셋, 헤더 길이, 내용 길이, 태그, 값이 표시됩니다.
  3. 확장 옵션을 켜면 OCTET·BIT STRING 안에 숨은 DER이 열립니다.
  4. 남은 바이트 안내를 확인하세요. 파일에 구조가 하나 이상 있다는 뜻입니다.
  5. 다른 도구의 출력과 비교하려면 목록을 복사하세요.

자주 묻는 질문

인증서 디코더와 뭐가 다른가요?
인증서 디코더는 X.509 인증서의 의미(주체, 만료, 대체 이름)를 이해합니다. 이 도구는 인코딩만 이해합니다. 그래서 CSR이든 키든 PKCS#7 번들이든 DER이기만 하면 동작하고, 필드 이름 대신 오프셋과 길이를 보여줍니다.
각 줄 앞의 숫자는 무엇인가요?
파일 안에서 그 값이 시작하는 오프셋, 그다음 헤더 길이와 내용 길이입니다. 이 셋이면 hex 덤프에서 어떤 노드든 찾을 수 있고, 부모 안에 들어가지 않는 길이를 잡아내는 것도 이것으로 합니다.
OCTET STRING에 'DER 포함'이라고 표시되는 이유는요?
그 내용을 DER로 파싱했을 때 정확히 다 소비됐기 때문입니다. 대개 안에 또 다른 구조가 중첩돼 있다는 뜻이고, 인증서 확장과 키 자료가 그렇게 실립니다. 그래도 추측이라서 단정하지 않고 표시만 하며, 펼치는 것은 선택입니다.
부정 길이(indefinite)는 무슨 뜻인가요?
크기를 밝히는 대신 end-of-contents 표시가 나올 때까지 값이 이어진다는 뜻입니다. BER은 허용하지만 DER은 허용하지 않습니다. DER이어야 할 것에서 이게 보이면, 엄격한 파서가 파일을 거부한 이유가 대개 그것입니다.
개인키를 붙여넣어도 되나요?
개인키도 DER이니 구조는 해석되고, 업로드되지도 않습니다. 그래도 개인키는 로컬 도구로 보는 편이 낫습니다. 웹 페이지에 키를 붙여넣는 습관이 결국 유출로 이어지니까요.
값이 검증되기도 하나요?
아니요. 이 도구는 의미가 아니라 인코딩을 읽습니다. 서명이나 체인, 만료일을 확인하지 않습니다. 바이트가 무엇이라고 말하는지를 보여줄 뿐입니다.

관련 도구