目次
背景Java2標準の鍵管理ツールkeytoolは公開鍵のimport/exportやCSRの生成に関する機能を持っている。 また、KeyStore?の秘密鍵をimport/exportする機能は持っていないが、 Java2標準のKeyStore?実装クラスはPKCS#12形式で用意された 秘密鍵/公開鍵のkey pairをKeyStore?として利用することが可能である。このkeytoolでは提供していない事項、既存のKeyStore?の秘密鍵をimport/exportする機能、 を必要とする場合、Java2 CoreAPIのjava.securityパッケージ以下の適当なクラスを利用して、 KeyStore?を操作する必要がある。 tomcatのkeystoreとして、Java DefaultのJKSは指定できるけど、他のタイプって言うかPKCS12のがあっても・・・と言う感じだったが、設定にはkeytoolのオプションでも存在する keystoreTypeが存在するため、pkcs12を設定すれば問題なく通ると思う。 さらに6同梱のkeytoolのマニュアルを読んでみると爽やかに-importkeystoreとか新設されてるしw まぁ、これはこれとして、6のjava.security付近を見てみるつもりで作ってみよぅ。
作るもの以下の条件で作成する
作らないもの作るものは作るものとして、opensslで作ったpkcs8の秘密鍵(or self signedの証明書も込みにしたpkcs12)を元にjksのkeystoreを用意する手順も書いておく。
# java -version java version "1.6.0_01" Java(TM) SE Runtime Environment (build 1.6.0_01-b06) Java HotSpot(TM) Client VM (build 1.6.0_01-b06, mixed mode, sharing)
# openssl pkcs12 -export -inkey private/cakey.pem -in cacert.pem \ -certfile cacert.pem -out ca.p12 Enter pass phrase for private/cakey.pem: Enter Export Password: Verifying - Enter Export Password: # keytool -list -keystore ca.p12 -storetype pkcs12 キーストアのパスワードを入力してください: キーストアのタイプ: PKCS12 キーストアのプロバイダ: SunJSSE キーストアには 1 エントリが含まれます。 2, 2008/04/14, PrivateKeyEntry, 証明書のフィンガープリント (MD5): 1F:D6:4A:A3:F6:15:E2:10:92:8C:6C:EC:D6:6B:F8:FE
# keytool -importkeystore -srckeystore ca.p12 -srcstoretype pkcs12 \ -destkeystore ca.jks -deststoretype jks 出力先キーストアのパスワードを入力してください: 新規パスワードを再入力してください: ソースキーストアのパスワードを入力してください: 別名 1 のエントリのインポートに成功しました。 インポートコマンドが完了しました: 1 件のエントリのインポートが成功しました。 0 件のエントリのインポートが失敗したか取り消されました
# keytool -list -keystore ca.jks キーストアのパスワードを入力してください: キーストアのタイプ: JKS キーストアのプロバイダ: SUN キーストアには 1 エントリが含まれます。 1, 2008/04/14, PrivateKeyEntry, 証明書のフィンガープリント (MD5): 1F:D6:4A:A3:F6:15:E2:10:92:8C:6C:EC:D6:6B:F8:FE このオプション、もっと前から作っておいていいと思うんですが。。。
参考リンク
|