• 以前PKCS#12ファイルの読み込みに成功したので安心していたら、クラス設計中に思わぬ落とし穴にはまる。
  • 「KeyStoreから公開鍵を取りたい」という要求に対して、処理手順としては「KeyStoreから証明書を取り出す」→「証明書から公開鍵を取り出す」という手順が必要になる。だがJavadocを見ると「java.security.KeyStore.getCertificate(String alias)」とある。あれ?っと思い、Keystore.aliases()で得られた"1"というAlias(そもそもなんでKeyのAliasがそんなのになっているのかも分からないんだけど)を入れてみる。結果としてはダメ、取れない。
  • ふと考えると、XML署名の際にはDigestの復元用に公開鍵が必要になる。これはX509証明書に入っているので、通常はX509証明書を署名になかに放り込むわけだが、前述の通り、Aliasが分からないと証明書は取れない。つまり、署名はできるけど復元(検証)が出来ないという事になる。なんじゃそりゃ…。
  • J2SDK付属のKeytoolを使ってリポジトリを作成する場合、Aliasは自分で設定するので分かるけれど、CAから配布されたPKCS#12の場合、Aliasはどう設定されているんだろう? というか他のS/MIMEとかでも、Keyのパスワード入力を要求される場合は想定できるけど、Aliasなんて聞かれることなんてあるのか?