JCE Provider Checkerに引き続き、
Android 4.0以降のルート証明書ストアを表示させるための
ツール"Root CA Viewer Lite (for Android)"という無料アプリを
昨日公開しました。
標準機能でもルート証明書ストアは見られるんですが、 国名、組織名、部署名といった証明書の識別名の一部と 有効期間、フィンガープリントぐらいしか見られないんですよね。 「それじゃあ証明書の特定はフィンガープリントでしか できないだろー!!!」みたいな••• いくつ証明書が入っているのかも地味に数えないとわからないし•••
とりあえずJavaのX509Certificateクラスをベースに 証明書の基本領域、拡張領域など 取得可能なものは表示できるようにしました。
識別名は文字列で処理してんるんですが、 emailAddressやserialNumberなどのマイナーな属性の相対識別名が OID.1.2.840.113549.1.9.1=#1615616161... みたいな表現になっちゃってた やつを文字列処理で "E=hoge@hoge.com"みたいに見やすいように変換しています。
このツールの残念なのは、 Javaの標準機能だけだとサポートしてない拡張領域の解析が面倒臭くて やってないのと、 楕円の証明書の鍵長が取得できないんですよね。 拡張領域の並び順もわかんなくなっちゃうし、、、 その辺りはちょっとプログラムサイズの大きい無料の PRO版出すかなと思っているので乞うご期待ってことで、、、
クリティカルフラグの表示が"[!]"はクリティカル、"[-]"はノンクリティカルとか ダサ過ぎるのと、基本領域を表すListViewの要素が"*** BASIC FIELD ***" って ダサ過ぎるので、このあたりは色づけしたりアイコンつけたり何とかしたいと思ってます。 (時間があればorz) しっかし、JCE Provider CheckerもRoot CA Viewerも同じようなListViewの 見てくれで芸が無いっすねぇorz。
またDigiNotarと似たような事件とか勃発して「おーい、 どのルート証明書を無効にしていいのかよくわかんないよー」とか いうときに思い出して活用していただければと思います。
ではでは
小宮山です。ご無沙汰しています。漆島さんのご活躍はFBでチエック、楽しんでいます。
時間に余裕があることもあり、単なる興味からRFC5280を少し調べています。下記についてコメント、適当な資料がありましたら教えてください。全く急ぎません。職場のアドレスが手元にないので、この欄を利用させてもらいました。
Q1. 4.2.1.5Policy Mppings, 4.2.1.11Policy Constraints, 4.2.1.14Inhibit Policyというややこしい拡張があり、6.Certification Path Validationに関係してきて、読み進む意欲がくじけてしまいます。この拡張フィールドのある証明書はどのようなもので、具体例がありましたら教えてください。少なくともTSA証明書関連には見当たりません。
Q2. Certification Path Validationは、最終的には各証明書検証過程でsignature valueを計算し比較をするのかと思いますが、6.1.5Wrap-up Procedureには明示的に記述されていません。見逃しているかもしれませんが記述無の理由はなにかあるのでしょうか。
以上、よろしくお願いします。