少なくともjdk6を使用すると、かなり簡単です...
bash$ keytool -keystore foo.jks -genkeypair -alias foo \
-dname 'CN=foo.example.com,L=メルボルン,ST=ビクトリア,C=AU'
キーストアのパスワードを入力してください:
新しいパスワードを再入力してください:
の鍵パスワードを入力してください
(キーストアのパスワードと同じ場合は RETURN):
bash$ keytool -keystore foo.jks -exportcert -alias foo | \
openssl x509 -inform der -テキスト
キーストアのパスワードを入力してください: asdasd
証明書:
データ:
バージョン: 3 (0x2)
シリアル番号: 1237334757 (0x49c03ae5)
署名アルゴリズム: dsaWithSHA1
発行者: C=AU、ST=ビクトリア、L=メルボルン、CN=foo.example.com
有効
前: 3 月 18 日 00:05:57 2009 GMT
後: 2009 年 6 月 16 日 00:05:57 GMT
件名: C=AU、ST=ビクトリア、L=メルボルン、CN=foo.example.com
件名の公開鍵情報:
公開鍵アルゴリズム: dsaEncryption
DSA 公開鍵:
パブ:
00:e2:66:5c:e0:2e:da:e0:6b:a6:aa:97:64:59:14:
7e:a6:2e:5a:45:f9:2f:b5:2d:f4:34:27:e6:53:c7:
bash$ keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcstoretype jks \
-deststoretype pkcs12
宛先キーストアのパスワードを入力してください:
新しいパスワードを再入力してください:
ソース キーストアのパスワードを入力してください:
エイリアス foo のエントリが正常にインポートされました。
インポート コマンドが完了しました: 1 エントリが正常にインポートされ、0 エントリが失敗またはキャンセルされました
bash$ openssl pkcs12 -in foo.p12 -out foo.pem
インポートパスワードを入力してください:
MAC 検証済み OK
PEM パスフレーズを入力してください:
検証中 - PEM パスフレーズを入力してください:
bash$ openssl x509 -text -in foo.pem
証明書:
データ:
バージョン: 3 (0x2)
シリアル番号: 1237334757 (0x49c03ae5)
署名アルゴリズム: dsaWithSHA1
発行者: C=AU、ST=ビクトリア、L=メルボルン、CN=foo.example.com
有効
前: 3 月 18 日 00:05:57 2009 GMT
後: 2009 年 6 月 16 日 00:05:57 GMT
件名: C=AU、ST=ビクトリア、L=メルボルン、CN=foo.example.com
件名の公開鍵情報:
公開鍵アルゴリズム: dsaEncryption
DSA 公開鍵:
パブ:
00:e2:66:5c:e0:2e:da:e0:6b:a6:aa:97:64:59:14:
7e:a6:2e:5a:45:f9:2f:b5:2d:f4:34:27:e6:53:c7:
bash$ openssl dsa -text -in foo.pem
DSA キーの読み取り
PEM パスフレーズを入力してください:
秘密鍵: (1024 ビット)
特権:
00:8f:b1:af:55:63:92:7c:d2:0f:e6:f3:a2:f5:ff:
1a:7a:fe:8c:39:dd
パブ:
00:e2:66:5c:e0:2e:da:e0:6b:a6:aa:97:64:59:14:
7e:a6:2e:5a:45:f9:2f:b5:2d:f4:34:27:e6:53:c7:
最終的には次のようになります。
- foo.jks - Java 形式のキーストア。
- foo.p12 - PKCS#12 形式のキーストア。
- foo.pem - キーストアからのすべてのキーと証明書 (PEM 形式)。
(この最後のファイルは、必要に応じてキーと証明書に分割できます。)
コマンドの概要 - JKS キーストアを作成するには:
keytool -keystore foo.jks -genkeypair -alias foo \
-dname 'CN=foo.example.com,L=Melbourne,ST=Victoria,C=AU'
コマンドの概要 - JKS キーストアを PKCS#12 キーストアに変換してから、PEM ファイルに変換するには:
keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcstoretype jks \
-deststoretype pkcs12
openssl pkcs12 -in foo.p12 -out foo.pem
JKS キーストアに複数の証明書があり、エイリアスの 1 つに関連付けられた証明書とキーのみをエクスポートする場合は、次のバリエーションを使用できます。
keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcalias foo \
-srcstoretype jks \
-deststoretype pkcs12
openssl pkcs12 -in foo.p12 -out foo.pem
コマンドの概要 - JKS キーストアを PEM ファイルと比較するには:
keytool -keystore foo.jks -exportcert -alias foo | \
openssl x509 -inform der -text
openssl x509 -text -in foo.pem
openssl dsa -text -in foo.pem