3.3. Apache Karaf コンテナーで Undertow の SSL/TLS を有効化
以下の手順では、キーストアパスワード StorePass
およびキーパスワード KeyPass
で、署名済みの X.509 証明書と秘密鍵のペアがキーストアファイル alice.ks
で作成済みであることを前提とします。
Karaf コンテナーで Undertow の SSL/TLS を有効にするには、以下を実行します。
Pax Web サーバーが、
etc/undertow.xml
ファイルから設定を取得するように設定されていることを確認します。etc/org.ops4j.pax.web.cfg
ファイルの内容を確認すると、以下の設定があるはずです。org.ops4j.pax.web.config.file=${karaf.etc}/undertow.xml
テキストエディターで
etc/org.ops4j.pax.web.cfg
ファイルを開き、以下の行を追加します。org.osgi.service.http.port.secure=8443
etc/org.ops4j.pax.web.cfg
ファイルを保存して閉じます。-
テキストエディターで
etc/undertow.xml
ファイルを開きます。次の手順では、インストール時以降、変更されていないデフォルトのundertow.xml
ファイルで作業することを前提としています。 XML 要素
http-listener
およびhttps-listener
を検索します。http-listener
要素をコメントアウトし (<!--
および-->
で囲み)、https-listener
要素をアンコメントします (2 行使用)。編集された XML のフラグメントは、次のようになります。<!-- HTTP(S) Listener references Socket Binding (and indirectly - Interfaces) --> <!-- http-listener name="http" socket-binding="http" /> --> <!-- verify-client: org.xnio.SslClientAuthMode.NOT_REQUESTED, org.xnio.SslClientAuthMode.REQUESTED, org.xnio.SslClientAuthMode.REQUIRED --> <https-listener name="https" socket-binding="https" security-realm="https" verify-client="NOT_REQUESTED" />
w:keystore
要素を検索します。デフォルトでは、w:keystore
要素は以下のように設定されます。<w:keystore path="${karaf.etc}/certs/server.keystore" provider="JKS" alias="server" keystore-password="secret" key-password="secret" generate-self-signed-certificate-host="localhost" />
Undertow サーバーの証明書として
alice
証明書をインストールするには、以下のようにw:keystore
要素属性を変更します。-
path
を、ファイルシステムにおけるalice.ks
ファイルの場所 (絶対パス) に設定します。 -
provider
をJKS
に設定します。 -
alias
をキーストアのalice
証明書エイリアスに設定します。 -
keystore-password
を、キーストアをアンロックするパスワードの値に設定します。 -
key-password
を、alice
秘密鍵を暗号化するパスワードの値に設定します。 -
generate-self-signed-certificate-host
属性設定を削除します。
-
たとえば、
alice.ks
キーストアをインストールした後に、変更されたw:keystore
要素は以下のようになります。<w:keystore path="${karaf.etc}/certs/alice.ks" provider="JKS" alias="alice" keystore-password="StorePass" key-password="KeyPass" />
セキュアな HTTPS ポートがバインドする IP アドレスを指定するために使用される
<interface name="secure">
タグを検索します。デフォルトでは、この要素は次のようにコメントアウトされます。<!--<interface name="secure">--> <!--<w:inet-address value="127.0.0.1" />--> <!--</interface>-->
要素のコメントを解除し、
value
属性をカスタマイズして、HTTPS ポートをバインドする IP アドレスを指定します。たとえば、ワイルドカード値0.0.0.0
は、利用可能なすべての IP アドレスにバインドするように HTTPS を設定します。<interface name="secure"> <w:inet-address value="0.0.0.0" /> </interface>
<socket-binding name="https"
タグを検索し、コメント解除します。このタグのコメントを解除すると、次のようになります。<socket-binding name="https" interface="secure" port="${org.osgi.service.http.port.secure}" />
-
etc/undertow.xml
ファイルを保存して閉じます。 - 設定の変更を有効にするために、Fuse コンテナーを再起動します。