jetty 9.3.10のSSLの設定

先の投稿で、Jetty9のSSLについては、
https://hirooka.pro/?p=5266
を見たらできそうと書いたのだけど、jettyのバージョンが上がっており、若干違っていたのでまとめておきます。

  1. keystoreの作成
  2. sslの設定

keystoreの作成

Jettyでは、PKCS12フォーマットでないと使えないので、サーバの秘密鍵ファイル、サーバ証明書からPKCS12形式のファイルを作成します。

openssl pkcs12 -inkey hogehoge.com.key -in hogehoge.com.crt -export -out jetty.pkcs12

以下のようにhogehoge.com.keyを作成したときのパスフレーズを聞かれるので入力します。

Enter pass phrase for hogehoge.com.key:

次にExport用のパスワードを設定します。

Enter Export Password:
Verifying - Enter Export Password:

PKCS12形式のファイルをkeystoreに変換します。

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

以下のようにkeystoreのパスワードの設定を求められます。

Enter destination keystore password: 
Re-enter new password:

次に、上で設定したExport用のパスワードを入力します。

Enter source keystore password:

問題がなければ以下のように表示されてkeystoreが作成されます。

Entry for alias 1 successfully imported.
Import command completed: 1 entries successfully imported, 0 entries failed or cancelled

最後にkeystoreをjettyのetc以下に設置します。

mv keystore jetty/etc/

sslの設定

ポートはデフォルトで8443を利用します。
変更する場合は、jetty/etc/jetty-ssl.xmlの

<Set name="port"><Property name="jetty.ssl.port" deprecated="ssl.port" default="8443" /></Set>

の部分を変更します。

keystore関係の設定は、jetty-ssl-context.xmlを修正します。
keystoreがjetty/etc以下にない場合は、

<Set name="KeyStorePath"><Property name="jetty.base" default="." />/<Property name="jetty.sslContext.keyStorePath" deprecated="jetty.keystore" default="etc/keystore"/></Set>

を変更します。次に、keystoreのパスワードとExport用のパスワードを変更します。

<Set name="KeyStorePassword"><Property name="jetty.sslContext.keyStorePassword" deprecated="jetty.keystore.password" default="keystoreのパスワード"/></Set>
<Set name="KeyManagerPassword"><Property name="jetty.sslContext.keyManagerPassword" deprecated="jetty.keymanager.password" default="Export用のパスワード"/></Set>

最後に、jetty/start.iniの適当な場所に以下の行を追加してSSLを有効にします。

--module=https

変更後はjettyを再起動したら完了です。
8443ポートの開放も忘れずに。