[Java] Jetty 9 のための Keystore


OpenSSL で作成したサーバ秘密鍵とサーバ証明書を Jetty 9 で使用できるように Keystore に変換してみます.

Oracle Java SE 7u51
OS X 10.9.1


OpenSSL でサーバの秘密鍵を生成します.
AES 256bit、鍵長 2048bit としてみました。

openssl genrsa -aes256 -out server.key 2048


Generating RSA private key, 2048 bit long modulus
e is 65537 (0x10001)
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:

server.key のパスフレーズはファイル名の繰り返し keykeykey としました.



openssl req -new -x509 -days 365 -key server.key -out server.crt

ここで -x509 を付けないと,後々 keystore を生成する際に下記のようなエラーとなります.

keytool error: java.lang.Exception: Input not an X.509 certificate


Enter pass phrase for server.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:Mokyu
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Example
Organizational Unit Name (eg, section) []:example
Common Name (e.g. server FQDN or YOUR name) []:example.test
Email Address []:mail@example.test

以上で,サーバ秘密鍵 server.key,サーバ証明書 server.crt ができました.


サーバ秘密鍵とサーバ証明書が分かれたままでは Jetty で読めないので,サーバ秘密鍵とサーバ証明書を PKCS12 フォーマットで結合させます.

openssl pkcs12 -inkey server.key -in server.crt -export -out jetty.pkcs12

Export パスワードを設定します.
expexpexp としました.

Enter pass phrase for server.key:
Enter Export Password:
Verifying - Enter Export Password:

Java の keytool を使用し,作成した PKCS12 フォーマットを keystore に変換します.

なお,keytool のパスは,

which key tool



keytool の実体は,

ls -al /usr/bin/keytool


lrwxr-xr-x  1 root  wheel  77 Nov 14 00:05 /usr/bin/keytool -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/keytool

作成した PKCS12 フォーマットを keystore に変換します.

keytool -importkeystore -srckeystore jetty.pkcs12 -srcstoretype PKCS12 -destkeystore keystore

destination keystore パスワードは stostosto としました.
source パスワードは先ほど設定した expexpexp です.

Enter destination keystore password:  
Re-enter new password: 
Enter source keystore password:  
Entry for alias 1 successfully imported.
Import command completed:  1 entries successfully imported, 0 entries failed or cancelled

keystore を Eclipse のプロジェクトへ移動させます。

cp keystore ~/workspace/project/src/main/resources/