1.2.9. レガシーのコア管理認証を使用した一方向 SSL/TLS の管理インターフェースの設定

一方向 SSL/TLS のみを使用して通信を行うよう JBoss EAP 管理んたーフェースを設定すると、セキュリティーが強化されます。クライアントと管理インターフェース間のネットワークトラフィックはすべて暗号化されるため、仲介者攻撃などのセキュリティー攻撃のリスクが軽減されます。

この手順では、JBoss EAP インスタンスとの暗号化されていない通信を無効にします。この手順は、スタンドアロンサーバーと管理対象ドメイン設定の両方に該当します。管理対象ドメインの場合は、管理 CLI コマンドにホスト名 (例: /host=master) を付けます。

重要

管理インターフェースで一方向 SSL/TLS を有効にする手順を実行すると、明示的に指示しない限り、設定は再読み込みされません。これを実行すると、管理インターフェースがロックされる可能性があります。

管理インターフェースをセキュア化するためのキーストアの作成
注記

このキーストアは、管理インターフェースが JCEKS 形式のキーストアと互換性がないため、JKS 形式である必要があります。

以下を実行してキーストアを生成します。パラメーターの例の値 (例: aliaskeypasskeystorestorepassdname) を環境に適切な値に置き換えます。

$ keytool -genkeypair -alias appserver -storetype jks -keyalg RSA -keysize 2048 -keypass password1 -keystore EAP_HOME/standalone/configuration/identity.jks -storepass password1 -dname "CN=appserver,OU=Sales,O=Systems Inc,L=Raleigh,ST=NC,C=US" -validity 730 -v
注記

パラメーターの validity は、キーが有効な日数を指定します。730 の値は 2 年と等しくなります。

管理インターフェースが HTTPS にバインドされようにする

スタンドアロンサーバーの実行

管理インターフェイスが HTTPS にバインドされるようにするには、management-https 構成を追加し、management-http 構成を削除する必要があります。

以下の CLI コマンドを使用して管理インターフェースを HTTPS にバインドします。

/core-service=management/management-interface=http-interface:write-attribute(name=secure-socket-binding, value=management-https)

/core-service=management/management-interface=http-interface:undefine-attribute(name=socket-binding)

管理対象ドメインの起動

secure-port を追加し、ポート構成を削除して、management-interface 属性内のソケット要素を変更します。

以下のコマンドを使用して管理インターフェースを HTTPS にバインドします。

/host=master/core-service=management/management-interface=http-interface:write-attribute(name=secure-port,value=9993)

/host=master/core-service=management/management-interface=http-interface:undefine-attribute(name=port)
オプション: カスタム socket-binding-group の実装

カスタムの socket-binding-group を使用する場合は、management-https バインディングが定義されていることを確認する必要があります。デフォルトではポート 9993 にバインドされます。これは、サーバーの設定ファイルの socket-binding-group 属性から確認したり、管理 CLI を使用して確認できます。

/socket-binding-group=standard-sockets/socket-binding=management-https:read-resource(recursive=true)

{
    "outcome" => "success",
    "result" => {
        "client-mappings" => undefined,
        "fixed-port" => false,
        "interface" => "management",
        "multicast-address" => undefined,
        "multicast-port" => undefined,
        "name" => "management-https",
        "port" => expression "${jboss.management.https.port:9993}"
    }
}
新しいセキュリティーレルムの作成

この例では、HTTPS の ManagementRealmHTTPS を使用する新しいセキュリティーレリムは、EAP_HOME/standalone/configuration/ ディレクトリーに位置する https-mgmt-users.properties というプロパティーファイルを使用します。

  1. ユーザー名とパスワードを格納するプロパティーファイルを作成します。

    ユーザー名とパスワードは後でファイルに追加できます。ただし、現在は、https-mgmt-users.properties という名前で空のファイルを作成し、その場所に保存する必要があります。以下の例は、touch コマンドの使用を示しています。しかし、テキストエディターなどの他のメカニズムを使用することもできます。

    例: touch コマンドを使用した空のファイルの作成

    $ touch EAP_HOME/standalone/configuration/https-mgmt-users.properties

  2. 次に、以下の管理 CLI コマンドを使用して ManagementRealmHTTPS という名前の新規セキュリティーレルムを作成します。

    /core-service=management/security-realm=ManagementRealmHTTPS:add
    
    /core-service=management/security-realm=ManagementRealmHTTPS/authentication=properties:add(path=https-mgmt-users.properties,relative-to=jboss.server.config.dir)
  3. プロパティーファイルにユーザーを追加します。

    これで、新しいセキュリティーレルムを作成し、認証用にプロパティーファイルを使用するよう設定しました。EAP_HOME/bin/ ディレクトリーの add-user スクリプトを使用して、このプロパティーファイルにユーザーを追加する必要があります。add-user スクリプトを実行する際には、-up-r オプションをそれぞれ使用してプロパティーファイルとセキュリティーレルムの両方を指定する必要があります。そこから、add-user スクリプトは、https-mgmt-users.properties ファイルに保存するためのユーザー名とパスワードの情報を対話的に要求します。

    $ EAP_HOME/bin/add-user.sh -up EAP_HOME/standalone/configuration/https-mgmt-users.properties -r ManagementRealmHTTPS
    ...
    Enter the details of the new user to add.
    Using realm 'ManagementRealmHTTPS' as specified on the command line.
    ...
    Username : httpUser
    Password requirements are listed below. To modify these restrictions edit the add-user.properties configuration file.
     - The password must not be one of the following restricted values {root, admin, administrator}
     - The password must contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), 1 non-alphanumeric symbol(s)
     - The password must be different from the username
    ...
    Password :
    Re-enter Password :
    About to add user 'httpUser' for realm 'ManagementRealmHTTPS'
    ...
    Is this correct yes/no? yes
    ..
    Added user 'httpUser' to file 'EAP_HOME/configuration/https-mgmt-users.properties'
    ...
    Is this new user going to be used for one AS process to connect to another AS process?
    e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server EJB calls.
    yes/no? no
    重要

    プロパティーファイルを使用してユーザー名とパスワードを保存するようにセキュリティレルムを設定する場合、各レリムは別のレルムと共有されていない個別のプロパティーを使用することが推奨されます。

新しいセキュリティーレルムを使用するように管理インターフェースを設定します。

以下の管理 CLI コマンドを使用して、新しいセキュリティーレルムを使用するよう管理インターフェースを設定します。

/core-service=management/management-interface=http-interface:write-attribute(name=security-realm,value=ManagementRealmHTTPS)
キーストアを使用するように管理インターフェースを設定

以下の管理 CLI コマンドを使用して、キーストアを使用するように管理インターフェースを設定します。パラメーターファイルでは、パスワードとエイリアスの値を、管理インターフェースをセキュア化するためのキーストアの作成 手順からコピーする必要があります。

/core-service=management/security-realm=ManagementRealmHTTPS/server-identity=ssl:add(keystore-path=identity.jks,keystore-relative-to=jboss.server.config.dir,keystore-password=password1, alias=appserver)
注記

キーストアのパスワードを更新するには、以下の CLI コマンドを使用します。

/core-service=management/security-realm=ManagementRealmHTTPS/server-identity=ssl:write-attribute(name=keystore-password,value=newpassword)

このときは、サーバーの設定をリロードする必要があります。

reload

サーバー設定のリロード後には、起動したサービスの数を示すテキストの直前に以下の内容がログに含まれるはずです。

13:50:54,160 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0061: Http management interface listening on https://127.0.0.1:9993/management
13:50:54,162 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0052: Admin console listening on https://127.0.0.1:9993

これで、管理インターフェースはポート 9993 をリッスンするようになります。これにより、手順が成功したことを確認できました。

重要

このとき、CLI は接続を切断し、ポートバインディングが変更されたため再接続できなくなります。次のステップ に進み、jboss-cli.xml ファイルを更新して、管理 CLI が再接続できるようにします。

jboss-cli.xml ファイルの更新

管理 CLI を使用して管理アクションを実行する場合は、以下の変更を EAP_HOME/bin/jboss-cli.xml ファイルに行う必要があります。

  • <default-protocol> の値を https-remoting に更新します。
  • <default-controller> において、<protocol> の値を https-remoting に更新します。
  • <default-controller> で、<port> の値を 9993 に更新します。

例: jboss-cli.xml

<jboss-cli xmlns="urn:jboss:cli:2.0">
    <default-protocol use-legacy-override="true">https-remoting</default-protocol>
    <!-- The default controller to connect to when 'connect' command is executed w/o arguments -->
    <default-controller>
        <protocol>https-remoting</protocol>
        <host>localhost</host>
        <port>9993</port>
    </default-controller>
...

次回、管理 CLI を使用して管理インターフェースに接続する場合は、サーバー証明書を受け入れ、ManagementRealmHTTPS セキュリティーレルムに対して認証を行う必要があります。

例: サーバー証明書の許可および認証

$ ./jboss-cli.sh -c
Unable to connect due to unrecognised server certificate
Subject    - CN=appserver,OU=Sales,O=Systems Inc,L=Raleigh,ST=NC,C=US
Issuer     - CN=appserver, OU=Sales, O=Systems Inc, L=Raleigh, ST=NC, C=US
Valid From - Tue Jun 28 13:38:48 CDT 2016
Valid To   - Thu Jun 28 13:38:48 CDT 2018
MD5 : 76:f4:81:8b:7e:c3:be:6d:ee:63:c1:7a:b7:b8:f0:fb
SHA1 : ea:e3:f1:eb:53:90:69:d0:c9:69:4a:5a:a3:20:8f:76:c1:e6:66:b6

Accept certificate? [N]o, [T]emporarily, [P]ermenantly : p
Authenticating against security realm: ManagementRealmHTTPS
Username: httpUser
Password:
[standalone@localhost:9993 /]

重要

security-realmssl-context両方 が定義されている場合、JBoss EAP は ssl-context によって提供される SSL / TLS 設定を使用します。