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 として解析したときにちょうど使い切ったからです。多くの場合、中に別の構造が入れ子になっているという意味で、証明書の拡張や鍵素材はそう運ばれます。それでも推測なので断定せず印を付けるだけにし、展開は任意です。
- 不定長とは何を意味しますか
- 大きさを宣言せず、end-of-contents の印が現れるまで値が続くという意味です。BER は許しますが DER は許しません。DER のはずのものでこれを見かけたら、厳密なパーサがそのファイルを拒んだ理由はたいていそれです。
- 秘密鍵を貼り付けてもよいですか
- 秘密鍵も DER なので構造は復号されますし、アップロードもされません。それでも秘密鍵はローカルのツールで見るほうが賢明です。鍵をウェブページに貼り付ける習慣が、いつか流出につながります。
- 値の検証もしますか
- いいえ。このツールは意味ではなく符号化を読みます。署名も連鎖も有効期限も確認しません。バイト列が何と言っているかを示すだけです。
関連ツール
MessagePack デコーダ
base64 か hex の MessagePack バイト列を貼り付けると、型・入れ子のマップ・バイナリ・タイムスタンプまでブラウザ内で解読します。
JWT デコーダー
JWT のヘッダー・クレーム・有効期限を即座に確認。
Protobuf デコーダ(.proto 不要)
base64 か hex の protobuf バイト列を貼り付けると、スキーマなしでフィールド番号、ワイヤ型、ネストしたメッセージ、文字列、packed 配列を読み取ります。
Base64 エンコーダー / デコーダー
テキストを Base64 にエンコード、または Base64 をテキストにデコード。
Quoted-Printable エンコーダー & デコーダー
テキストを MIME Quoted-Printable(RFC 2045)にエンコード、または復号 — =XX エスケープ・ソフト改行・UTF-8 に対応、エンコード時は 76 文字で折り返し — ブラウザ内で。
URL エンコーダー / デコーダー
URL 用にテキストをパーセントエンコード、または URL をデコード。