1.2. 管理インターフェイスのセキュア化の方法


ここでは、JBoss EAP 管理インターフェイスと関連サブシステムのセキュア化に関連するさまざまな操作を実行する方法を説明します。

注記

ここで使用する管理 CLI コマンドは、JBoss EAP スタンドアロンサーバーを実行していることを仮定しています。JBoss EAP 管理対象ドメインの管理 CLI を使用する場合の詳細は 管理 CLI ガイド を参照してください。

管理 CLI との Elytron の統合

管理インターフェイスは、レガシーセキュリティーレルムの場合と同様に、elytron サブシステムのリソースを使用して保護できます。

接続の SSL 設定は、以下の場所のいずれかから取得されます。

  • CLI 固有の設定内の SSL 設定。
  • サーバー証明書を受け入れるようにユーザーに自動的にプロンプトするデフォルトの SSL 設定。
  • java システムプロパティー。

クライアント設定は、wildfly-config.xml ファイルを使用して変更できます。

注記

-Dwildfly.config.url プロパティーを設定する場合は、すべてのファイルをクライアントの設定に使用できます。

1.2.1. ネットワークおよびポートの設定

ホストの設定に応じて、JBoss EAP はさまざまなネットワークインターフェイスおよびポートを使用するように設定できます。これにより、JBoss EAP はさまざまなホスト、ネットワーク、およびファイアウォール要件で使用できます。

関連情報

1.2.2. 管理コンソールの無効化

JBoss Operations Network などの他のクライアントは、JBoss EAP の管理に HTTP インターフェイスを使用して動作します。これらのサービスの使用を継続するには、Web ベースの管理コンソール自体を無効にしてください。これは、console-enabled 属性を false に設定すると実行できます。

手順

  • JBoss EAP の Web ベースの管理コンソールを無効にするには、次の手順に従います。

    /core-service=management/management-interface=http-interface/:write-attribute(name=console-enabled,value=false)

1.2.3. JMX へのリモートアクセスの無効化

jmx サブシステムへのリモートアクセスにより、JDK とアプリケーション管理操作がリモートでトリガーできます。

手順

  • JBoss EAP で JMX へのリモートアクセスを無効にするには、jmx サブシステムのリモーティングコネクターを削除します。

    /subsystem=jmx/remoting-connector=jmx/:remove

1.2.4. サイレント認証

JBoss EAP のデフォルトインストールには、ローカル管理 CLI ユーザーのサイレント認証メソッドが含まれています。これにより、ローカルユーザーは、ユーザー名またはパスワード認証なしで管理 CLI にアクセスできます。この機能を有効にすると、ローカルユーザーが認証なしに管理 CLI スクリプトを実行できるようになります。通常、ユーザーがローカル設定にアクセスできれば、独自のユーザー詳細を追加することもできるため便利な機能と見なされます。

より高度なセキュリティー管理が必要な場合は、サイレント認証を無効にできます。これは、設定ファイルの security-realm 属性内の local 要素を削除することによって実現できます。これは、スタンドアロンインスタンスとマネージドドメインの両方が対象となります。

重要

local 要素の削除は、JBoss EAP インスタンスの影響と、その設定を完全に理解している場合にのみ行う必要があります。

手順

  1. elytron サブシステムの使用時にサイレント認証を削除するには、以下の手順に従います。

    [standalone@localhost:9990 /] /subsystem=elytron/sasl-authentication-factory=managenet-sasl-authentication:read-resource
    {
        "outcome" => "success",
        "result" => {
            "mechanism-configurations" => [
                {
                    "mechanism-name" => "JBOSS-LOCAL-USER",
                    "realm-mapper" => "local"
                },
                {
                    "mechanism-name" => "DIGEST-MD5",
                    "mechanism-realm-configurations" => [{"realm-name" => "ManagementRealm"}]
                }
            ],
            "sasl-server-factory" => "configured",
            "security-domain" => "ManagementDomain"
        }
    }
    
    [standalone@localhost:9990 /] /subsystem=elytron/sasl-authentication-factory=managenet-sasl-authentication:list-remove(name=mechanism-configurations, index=0)
    
    [standalone@localhost:9990 /] reload
  2. レガシーセキュリティーレルムの使用時にサイレント認証を削除するには、以下を行います。

    /core-service=management/security-realm=<realm_name>/authentication=local:remove

1.2.5. Elytron サブシステムを使用して管理インターフェイスに対して一方向 SSL/TLS

JBoss EAP では、JBoss EAP 管理 CLI または管理コンソールを使用して管理インターフェイスの一方向 SSL/TLS を有効にできます。

管理 CLI では、一方向の SSL/TLS を以下の方法で有効にできます。

マネージメントコンソールでは、以下の方法で一方向 SSL/TLS を有効できます。

1.2.5.1. Security コマンドを使用した一方向 SSL/TLS の有効化

security enable-ssl-management コマンドを使用すると、管理インターフェイスに一方向 SSL/TLS を有効にできます。

手順

  • CLI で security enable-ssl-management --interactive コマンドを入力します。

    security enable-ssl-management --interactive
    
    Please provide required pieces of information to enable SSL:
    Key-store file name (default management.keystore): keystore.jks
    Password (blank generated): secret
    What is your first and last name? [Unknown]: localhost
    What is the name of your organizational unit? [Unknown]:
    What is the name of your organization? [Unknown]:
    What is the name of your City or Locality? [Unknown]:
    What is the name of your State or Province? [Unknown]:
    What is the two-letter country code for this unit? [Unknown]:
    Is CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown correct y/n [y]?
    Validity (in days, blank default): 365
    Alias (blank generated): localhost
    Enable SSL Mutual Authentication y/n (blank n): n
    
    SSL options:
    key store file: keystore.jks
    distinguished name: CN=localhost, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
    password: secret
    validity: 365
    alias: localhost
    Server keystore file keystore.jks, certificate file keystore.pem and keystore.csr file
    will be generated in server configuration directory.
    Do you confirm y/n :y

注記
  • コマンドを実行すると、管理 CLI がサーバーを再読み込みし、そのサーバーに再接続します。
  • disable-ssl-management コマンドを使用して、管理インターフェイスの一方向 SSL/TLS を無効にできます。

    security disable-ssl-management

    このコマンドでは、Elytron リソースは削除されません。SSL 設定に ApplicationRealm レガシーセキュリティーレルムを使用するようにシステムを設定します。

1.2.5.2. Elytron サブシステムのコマンドを使用した一方向 SSL/TLS の有効化

Elytron サブシステムでの管理インターフェイスに対する一方向 SSL/TLS の有効化

手順

  1. key-store を設定します。

    /subsystem=elytron/key-store=httpsKS:add(path=keystore.jks,relative-to=jboss.server.config.dir,credential-reference={clear-text=secret},type=JKS)
    注記

    上記のコマンドは、relative-to を使用してキーストアファイルの場所を参照します。または、path のキーストアにフルパスを指定することで、relative-to を省略できます。

    キーストアファイルが存在しない場合は、以下のコマンドを使用してサンプルキーペアを生成できます。

    /subsystem=elytron/key-store=httpsKS:generate-key-pair(alias=localhost,algorithm=RSA,key-size=1024,validity=365,credential-reference={clear-text=secret},distinguished-name="CN=localhost")
    
    /subsystem=elytron/key-store=httpsKS:store()
  2. key-manager および server-ssl-context を作成します。

    /subsystem=elytron/key-manager=httpsKM:add(key-store=httpsKS,credential-reference={clear-text=secret})
    
    /subsystem=elytron/server-ssl-context=httpsSSC:add(key-manager=httpsKM,protocols=["TLSv1.2"])
    重要

    Elytron サブシステムはデフォルトで KeyManagerFactory.getDefaultAlgorithm() を使用してアルゴリズムを決定するため、Red Hat は前のコマンドでアルゴリズム属性を指定しませんでした。ただし、アルゴリズム属性は指定できます。アルゴリズム属性を指定するには、使用している JDK によるキーマネージャーアルゴリズムを知る必要があります。たとえば、SunJSSE を使用する JDK は、PKIX および SunX509 アルゴリズムを提供します。

    前のコマンドでは、SunX509 をキーマネージャーアルゴリズム属性として指定できます。

    また、使用する HTTPS プロトコルを決定する必要もあります。上記のコマンド例は TLSv1.2 を使用します。

    cipher-suite-filter を使用して暗号スイートを指定し、use-cipher-suites-order 引数を使用してサーバーの暗号スイートの順序を優先できます。use-cipher-suites-order 属性はデフォルトで true に設定されます。これは、レガシー security サブシステムの動作とは異なります。その動作は、デフォルトで、クライアント暗号スイートの順序を許可します。

  3. 管理インターフェイスで HTTPS を有効にします。

    /core-service=management/management-interface=http-interface:write-attribute(name=ssl-context, value=httpsSSC)
    
    /core-service=management/management-interface=http-interface:write-attribute(name=secure-socket-binding, value=management-https)
  4. JBoss EAP インスタンスをリロードします。

    reload

一方向 SSL/TLS が管理インターフェイスに対して有効化されるようになりました。

重要

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

1.2.5.3. 管理コンソールを使った一方向 SSL/TLS の有効化

管理コンソールで使用する管理インターフェイスに対して SSL を有効にするには、管理コンソールの SSL ウィザードを使用します。

手順

  1. 管理コンソールにアクセスします。詳細は、JBoss EAP設定ガイド 管理コンソール を参照してください。
  2. Runtime に移動して、該当するサーバー名をクリックします。
  3. サーバー名の横にある 表示 をクリックします。
  4. HTTP Manageme…​ をクリックし、HTTP Management Interface 設定ページを開きます。
  5. Enable SSL をクリックしてウィザードを起動します。

    このウィザードでは、以下のシナリオで、SSL を有効にする方法を順を追ってガイドします。

    • 証明書ストアを作成し、自己署名証明書を生成する。
    • Let's Encrypt 認証局から証明書を取得したい。
    • 証明書ストアはすでにファイルシステムにあるが、キーストアの設定がない。
    • 有効な証明書ストアを使用するキーストアの設定が存在する。

ウィザードを使用すると、任意で相互認証のトラストストアを作成できます。

1.2.6. Elytron サブシステムを使用した管理インターフェイスに対する双方向 SSL/TLS の有効化

JBoss EAP では、管理インターフェイスの双方向 SSL/TLS は、security コマンドまたは elytron サブシステムコマンドのいずれかを使用して有効にできます。

双方向 SSL/TLS を有効にするには、クライアント証明書を取得または生成する必要があります。クライアント証明書を生成するには、以下の手順で行います。

その後、以下のいずれかの方法で管理インターフェイスの双方向 SSL/TLS を有効にします。

1.2.6.1. クライアント証明書の生成

クライアント証明書は、CLI の keytool コマンドを使用して生成できます。

手順

  1. クライアント証明書を作成します。

    $ keytool -genkeypair -alias client -keyalg RSA -keysize 1024 -validity 365 -keystore client.keystore.jks -dname "CN=client" -keypass secret -storepass secret
  2. クライアント証明書をエクスポートします。

    $ keytool -exportcert  -keystore client.keystore.jks -alias client -keypass secret -storepass secret -file /path/to/client.cer

1.2.6.2. セキュリティーコマンドによる双方向 SSL/TLS の有効化

security enable-ssl-management コマンドを使用すると、管理インターフェイスに双方向 SSL/TLS を有効にできます。

注記

以下の例では、信頼チェーンが存在しないので、証明書は検証されません。信頼された証明書を使用している場合、クライアントの証明書は問題なく検証できます。

前提条件

  • クライアントのキーストアを設定している。
  • サーバーのトラストストア用の証明書をエクスポートしている。

    詳しくは、クライアント証明書の生成 をご覧ください。

手順

  • CLI で security enable-ssl-management --interactive コマンドを入力します。

    security enable-ssl-management --interactive
    
    Please provide required pieces of information to enable SSL:
    Key-store file name (default management.keystore): server.keystore.jks
    Password (blank generated): secret
    What is your first and last name? [Unknown]: localhost
    What is the name of your organizational unit? [Unknown]:
    What is the name of your organization? [Unknown]:
    What is the name of your City or Locality? [Unknown]:
    What is the name of your State or Province? [Unknown]:
    What is the two-letter country code for this unit? [Unknown]:
    Is CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown correct y/n [y]?
    Validity (in days, blank default): 365
    Alias (blank generated): localhost
    Enable SSL Mutual Authentication y/n (blank n): y
    Client certificate (path to pem file): /path/to/client.cer
    Validate certificate y/n (blank y): n
    Trust-store file name (management.truststore): server.truststore.jks
    Password (blank generated): secret
    
    SSL options:
    key store file: server.keystore.jks
    distinguished name: CN=localhost, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
    password: secret
    validity: 365
    alias: localhost
    client certificate: /path/to/client.cer
    trust store file: server.trustore.jks
    trust store password: secret
    Server keystore file server.keystore.jks, certificate file server.pem and server.csr file will be generated in server configuration directory.
    Server truststore file server.trustore.jks will be generated in server configuration directory.
    Do you confirm y/n: y

    注記
    • コマンドを実行すると、管理 CLI がサーバーを再読み込みし、そのサーバーへの再接続を試みます。

      双方向 SSL/TLS 認証を完了するには、サーバーの証明書をクライアントトラストストアにインポートし、クライアント証明書を表示するようにクライアントを設定する必要があります。

    • disable-ssl-management コマンドを使用して、管理インターフェイスの双方向 SSL/TLS を無効にできます。

      security disable-ssl-management

      このコマンドでは、Elytron リソースは削除されません。SSL 設定に ApplicationRealm レガシーセキュリティーレルムを使用するようにシステムを設定します。

1.2.6.3. Elytron サブシステムのコマンドを使用した双方向 SSL/TLS の有効化

elytron サブシステムのコマンドを使用して、管理インターフェイスの双方向 SSL/TLS を有効にすることができます。

前提条件

手順

  1. キーストアを取得または生成します。

    JBoss EAP で一方向 SSL/TLS を有効にするには、使用する予定のキーストア、トラストストア、および証明書を取得または生成する必要があります。キーストア、トラストストア、および証明書の一連のサンプルを生成するには、以下のコマンドを使用します。

    1. key-store を設定します。

      /subsystem=elytron/key-store=twoWayKS:add(path=server.keystore.jks,relative-to=jboss.server.config.dir,credential-reference={clear-text=secret},type=JKS)
      
      /subsystem=elytron/key-store=twoWayKS:generate-key-pair(alias=localhost,algorithm=RSA,key-size=1024,validity=365,credential-reference={clear-text=secret},distinguished-name="CN=localhost")
      
      /subsystem=elytron/key-store=twoWayKS:store()
      注記

      上記のコマンドは、relative-to を使用してキーストアファイルの場所を参照します。または、path のキーストアにフルパスを指定することで、relative-to を省略できます。

    2. サーバー証明書をエクスポートします。

      /subsystem=elytron/key-store=twoWayKS:export-certificate(alias=localhost,path=/path/to/server.cer,pem=true)
    3. サーバートラストストアの key-store を作成し、クライアント証明書をサーバートラストストアにインポートします。

      注記

      以下の例では、信頼チェーンが存在しないので、証明書は検証されません。信頼された証明書を使用している場合、クライアントの証明書は問題なく検証できます。

      /subsystem=elytron/key-store=twoWayTS:add(path=server.truststore.jks,relative-to=jboss.server.config.dir,credential-reference={clear-text=secret},type=JKS)
      
      /subsystem=elytron/key-store=twoWayTS:import-certificate(alias=client,path=/path/to/client.cer,credential-reference={clear-text=secret},trust-cacerts=true,validate=false)
      
      /subsystem=elytron/key-store=twoWayTS:store()
  2. サーバーキーストアおよびトラストストアの key-managertrust-manager、および server-ssl-context を設定します。

    /subsystem=elytron/key-manager=twoWayKM:add(key-store=twoWayKS,credential-reference={clear-text=secret})
    
    /subsystem=elytron/trust-manager=twoWayTM:add(key-store=twoWayTS)
    
    /subsystem=elytron/server-ssl-context=twoWaySSC:add(key-manager=twoWayKM,protocols=["TLSv1.2"],trust-manager=twoWayTM,want-client-auth=true,need-client-auth=true)
    重要

    Elytron サブシステムはデフォルトで KeyManagerFactory.getDefaultAlgorithm() および TrustManagerFactory.getDefaultAlgorithm() を使用してアルゴリズムを決定するため、Red Hat は前のコマンドでアルゴリズム属性を指定しませんでした。ただし、アルゴリズム属性は指定できます。アルゴリズム属性を指定するには、使用している JDK によるキーマネージャーアルゴリズムを知る必要があります。たとえば、SunJSSE を使用する JDK は、PKIX および SunX509 アルゴリズムを提供します。

    前のコマンドでは、SunX509 をキーマネージャーアルゴリズム属性として指定し、PKIX をトラストマネージャーアルゴリズム属性として指定できます。

    また、使用する HTTPS プロトコルを決定する必要もあります。上記のコマンド例は TLSv1.2 を使用します。

    cipher-suite-filter を使用して暗号スイートを指定し、use-cipher-suites-order 引数を使用してサーバーの暗号スイートの順序を優先できます。use-cipher-suites-order 属性はデフォルトで true に設定されます。これは、レガシー security サブシステムの動作とは異なります。その動作は、デフォルトで、クライアント暗号スイートの順序を許可します。

  3. 管理インターフェイスで HTTPS を有効にします。

    /core-service=management/management-interface=http-interface:write-attribute(name=ssl-context, value=twoWaySSC)
    
    /core-service=management/management-interface=http-interface:write-attribute(name=secure-socket-binding, value=management-https)
  4. JBoss EAP インスタンスをリロードします。

    reload
    注記

    双方向 SSL/TLS 認証を完了するには、サーバーの証明書をクライアントトラストストアにインポートし、クライアント証明書を表示するようにクライアントを設定する必要があります。

  5. クライアント証明書を使用するようにクライアントを設定します。

    双方向 SSL / TLS 認証を完了するには、信頼されたクライアント証明書をサーバーに提示するようにクライアントを設定する必要があります。たとえば、ブラウザーを使用している場合は、信頼された証明書をブラウザーの信頼ストアにインポートする必要があります。

    これにより、サーバー管理への元の認証を変更せずに、双方向 SSL/TLS 認証を強制できます。

    元の認証方法を変更する場合は、JBoss EAP アイデンティティー管理の設定方法証明書による認証設定 を参照してください。

これで、双方向 SSL/TLS が管理インターフェイスに対して有効化されるようになります。

重要

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

1.2.7. CLI セキュリティーコマンドを使用した管理インターフェイスの SASL 認証

CLI の security コマンドを使用して、管理インターフェイスの SASL 認証を有効または無効にすることができます。このコマンドを使用して、SASL メカニズムを並べ替えることもできます。

SASL 認証の有効化

JBoss EAP では、elytron SASL 認証ファクトリーを使用した SASL 認証は security enable-sasl-management コマンドで管理インターフェイスに対して有効にできます。このコマンドは、認証の設定に必要で存在しないリソースをすべて作成します。このコマンドはデフォルトで、含まれる SASL ファクトリーと http-interface を関連付けます。

例: SASL 認証の有効化

security enable-sasl-management

Server reloaded.
Command success.
Authentication configured for management http-interface
sasl authentication-factory=management-sasl-authentication
security-domain=ManagementDomain

注記

コマンドを実行すると、管理 CLI がサーバーを再読み込みし、そのサーバーに再接続します。

SASL ファクトリーがすでに存在する場合、ファクトリーは --mechanism 引数によって定義されたメカニズムを使用するように更新されます。

引数の一覧は、Authorization Security Arguments を参照してください。

SASL 認証の無効化

アクティブな SASL 認証ファクトリーを削除するには、以下のコマンドを使用します。

security disable-sasl-management

または、以下のコマンドを使用して、アクティブな SASL 認証ファクトリーから特定のメカニズムを削除できます。

security disable-sasl-management --mechanism=MECHANISM
SASL メカニズムの順序変更

定義された SASL メカニズムの順序により、サーバーがリクエストを認証する方法が決まり、最初に一致したメカニズムがクライアントに送信されます。

この順序を変更するには、以下のように、security reorder-sasl-management コマンドにコンマで区切ったものを渡します。

security reorder-sasl-management --mechanisms-order=MECHANISM1,MECHANISM2,...

1.2.8. CLI セキュリティーコマンドを使用した管理インターフェイスの HTTP 認証の有効化

CLI の security コマンドを使用して、管理インターフェイスの HTTP 認証を有効または無効にすることができます。

HTTP 認証の有効化

JBoss EAP では、elytron HTTP 認証ファクトリーを使用した HTTP 認証は security enable-http-auth-management コマンドで管理インターフェイスに対して有効にできます。このコマンドは、http-interface のみを対象とすることができます。追加の引数なしでは、含まれる HTTP 認証ファクトリーをがこのインターフェイスに関連付けられます。

例: HTTP 認証の有効化

security enable-http-auth-management

Server reloaded.
Command success.
Authentication configured for management http-interface
http authentication-factory=management-http-authentication
security-domain=ManagementDomain

注記

コマンドを実行すると、管理 CLI がサーバーを再読み込みし、そのサーバーに再接続します。

HTTP ファクトリーがすでに存在する場合、ファクトリーは --mechanism 引数によって定義されたメカニズムを使用するように更新されます。

引数の一覧は、Authorization Security Arguments を参照してください。

HTTP 認証の無効化

アクティブな HTTP 認証ファクトリーを削除するには、以下のコマンドを使用します。

security disable-http-auth-management

または、以下のコマンドを使用して、アクティブ HTTP 認証ファクトリーから特定のメカニズムを削除できます。

security disable-http-auth-management --mechanism=MECHANISM

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

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

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

重要

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

  1. キーストアを作成して、管理インターフェイスをセキュア化。

    詳細は、管理インターフェイスを保護するための鍵ストアの作成 を参照してください。

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

    詳しくは、管理インターフェイスの HTTPS へのバインド を参照してください。

  3. オプション: カスタムの socket-binding-group を実装します。

    詳しくは カスタム socket-binding-group をご覧ください。

  4. 新しいセキュリティーレルムを作成します。

    詳しくは、新しいセキュリティーレルムの作成 をご覧ください。

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

    詳細は、セキュリティーレルムを使用する管理インターフェイスの設定 を参照してください。

  6. キーストアを使用するように管理インターフェイスを設定します。

    詳しくは、キーストアを使用する管理インターフェイスの設定 をご覧ください。

  7. jboss-cli.xml を更新します。

    詳細は、jboss-cli.xml ファイル の更新を参照してください。

1.2.9.1. キーストアを作成してた管理インターフェイスのセキュア化

キーストアを作成して、管理インターフェイスのセキュリティーを確保します。

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

手順

  • 以下の CLI コマンドでキーストアを作成します。

    パラメーター (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 年と等しくなります。

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

管理インターフェイスが HTTPS にバインドするように JBoss EAP を設定します。

手順

  • スタンドアロンサーバーを運用する場合の設定

    管理インターフェイスが 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)

1.2.9.3. カスタムの 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}"
    }
}

1.2.9.4. 新しいセキュリティーレルムの作成

新しいセキュリティーレルムを作成します。

この手順では、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
    重要

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

1.2.9.5. セキュリティーレルムを使用する管理インターフェイスの設定

管理インターフェイスがセキュリティーレルムを使用するように設定するには、管理 CLI コマンドを使用します。

手順

  • 次の管理 CLI コマンドを実行します。

    /core-service=management/management-interface=http-interface:write-attribute(name=security-realm,value=ManagementRealmHTTPS)

1.2.9.6. キーストアを使用する管理インターフェイスの設定

管理用 CLI コマンドを使用して、キーストアを使用するように管理インターフェイスを設定します。

手順

  1. 以下の管理 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)
  2. サーバーの設定を再読み込みします。

    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 が再接続できるようにします。

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

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

手順

  • 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 設定を使用します。

1.2.10. レガシーコア管理認証のある管理インターフェイスに双方向 SSL/TLS を設定する

クライアント認証 とも呼ばれる双方向 SSL/TLS 認証は、SSL/TLS 証明書を使用してクライアントとサーバーの両方を認証します。これは、クライアントとサーバーの両方に証明書があるという点で、一方向 SSL / TLS の管理インターフェイスの設定 とは異なります。そのため、サーバーの伝えるアイデンティティーだけでなく、クライアントの伝えるアイデンティティーも信頼できます。

本セクションでは、以下の規則を使用します。

HOST1
JBoss サーバーのホスト名。例: jboss.redhat.com.
HOST2
クライアントに適した名前。例: myclientこれは必ずしも実際のホスト名ではないことに注意してください。
CA_HOST1
HOST1 証明書に使用する DN (識別名) です。たとえば、cn=jboss,dc=redhat,dc=com となります。
CA_HOST2
HOST2 証明書に使用する DN (識別名) です。例: cn=myclient,dc=redhat,dc=com
注記

キーストアおよびトラストストアパスワードの保存にパスワード vault が使用された場合 (推奨)、パスワード vault はすでに作成されるはずです。パスワード vault の詳細は、Red Hat JBoss Enterprise Application Platform 7セキュリティーアーキテクチャーパスワード Vaultパスワード Vault システム を参照してください。

警告

Red Hat では、影響するすべてのパッケージで TLSv1.1 または TLSv1.2 を利用するために SSLv2、SSLv3、および TLSv1.0 を明示的に無効化することを推奨しています。

手順

  1. キーストアを生成します。

    $ keytool -genkeypair -alias HOST1_alias -keyalg RSA -keysize 1024 -validity 365 -keystore HOST1.keystore.jks -dname "CA_HOST1" -keypass secret -storepass secret
    
    $ keytool -genkeypair -alias HOST2_alias -keyalg RSA -keysize 1024 -validity 365 -keystore HOST2.keystore.jks -dname "CA_HOST2" -keypass secret -storepass secret
  2. 証明書をエクスポートします。

    $ keytool -exportcert  -keystore HOST1.keystore.jks -alias HOST1_alias -keypass secret -storepass secret -file HOST1.cer
    
    $ keytool -exportcert  -keystore HOST2.keystore.jks -alias HOST2_alias -keypass secret -storepass secret -file HOST2.cer
  3. 対立するトラストストアにインポートします。

    $ keytool -importcert -keystore HOST1.truststore.jks -storepass secret -alias HOST2_alias -trustcacerts -file HOST2.cer
    
    $ keytool -importcert -keystore HOST2.truststore.jks -storepass secret -alias HOST1_alias -trustcacerts -file HOST1.cer
  4. CertificateRealm を定義します。

    サーバー (host.xml または standalone.xml) の設定で CertificateRealm を定義し、その先となるインターフェイスを指定します。これは、以下のコマンドで実行できます。

    /core-service=management/security-realm=CertificateRealm:add()
    
    /core-service=management/security-realm=CertificateRealm/server-identity=ssl:add(keystore-path=/path/to/HOST1.keystore.jks, keystore-password=secret,alias=HOST1_alias)
    
    /core-service=management/security-realm=CertificateRealm/authentication=truststore:add(keystore-path=/path/to/HOST1.truststore.jks,keystore-password=secret)
  5. http-interfacesecurity-realm を新しい CertificateRealm に変更します。

    /core-service=management/management-interface=http-interface:write-attribute(name=security-realm,value=CertificateRealm)
  6. CLI の SSL/TLS 設定を追加します。

    重要

    双方向 SSL/TLS の追加に加え、管理インターフェイスも HTTPS にバインドされるように設定してください。詳細は、レガシーのコア管理認証を使用した一方向 SSL/TLS の管理インターフェイスの設定 管理インターフェイスが HTTPS にバインドされようにする を参照してください。

    EAP_HOME/bin/jboss-cli.xml を設定ファイルとして使用する CLI の SSL/TLS 設定を追加します。

    キーストアとトラストストアパスワードをプレーンテキストに保存するには、EAP_HOME/bin/jboss-cli.xml を編集し、変数に適切な値を使用して SSL/TLS 設定を追加します。

    例: プレーンテキストの jboss-cli.xml キーストアおよびトラストストアのパスワード

    <ssl>
      <alias>HOST2_alias</alias>
      <key-store>/path/to/HOST2.keystore.jks</key-store>
      <key-store-password>secret</key-store-password>
      <trust-store>/path/to/HOST2.truststore.jks</trust-store>
      <trust-store-password>secret</trust-store-password>
      <modify-trust-store>true</modify-trust-store>
    </ssl>

    パスワード vault に保存されているキーストアおよびトラストストアパスワードを使用するには、vault 設定および適切な vault の値を EAP_HOME/bin/jboss-cli.xml に追加する必要があります。

    例: パスワード vault の jboss-cli.xml キーストアおよびトラストストアのパスワード

    <ssl>
      <vault>
        <vault-option name="KEYSTORE_URL" value="path-to/vault/vault.keystore"/>
        <vault-option name="KEYSTORE_PASSWORD" value="MASK-5WNXs8oEbrs"/>
        <vault-option name="KEYSTORE_ALIAS" value="vault"/>
        <vault-option name="SALT" value="12345678"/>
        <vault-option name="ITERATION_COUNT" value="50"/>
        <vault-option name="ENC_FILE_DIR" value="EAP_HOME/vault/"/>
      </vault>
      <alias>HOST2_alias</alias>
      <key-store>/path/to/HOST2.keystore.jks</key-store>
      <key-store-password>VAULT::VB::cli_pass::1</key-store-password>
      <key-password>VAULT::VB::cli_pass::1</key-password>
      <trust-store>/path/to/HOST2.truststore.jks</trust-store>
      <trust-store-password>VAULT::VB::cli_pass::1</trust-store-password>
      <modify-trust-store>true</modify-trust-store>
    </ssl>

重要

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

1.2.11. HTTPS リスナーのリファレンス

HTTPS リスナーで使用できる属性の完全リストは、JBoss EAP設定ガイドUndertow Subsystem Attributes を参照してください。

1.2.11.1. 暗号化スイートについて

許可される一連の暗号を設定できます。JSSE 構文については、コンマ区切りのリストが必要です。OpenSSL 構文については、コロン区切のリストが必要です。1 つのみの構文を使うようにしてください。デフォルトは JVM のデフォルトです。

重要

強度の低い暗号を使用すると、セキュリティーが重大なリスクにさらされることになります。暗号スイートの NIST 推奨は NIST ガイドライン を参照してください。

利用可能な OpenSSL 暗号のリスト は、OpenSSL ドキュメントを参照してください。以下はサポート対象外であることに注意してください。

  • @SECLEVEL
  • SUITEB128
  • SUITEB128ONLY
  • SUITEB192

標準 JSSE 暗号のリスト は、Java のドキュメントを参照してください。

有効な暗号スイートのリストを更新するには、undertow サブシステムの HTTPS リスナーの enabled-cipher-suites 属性を使用します。

例: 有効化された暗号化スイートリストを更新する管理 CLI コマンド

/subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=enabled-cipher-suites,value="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA")

注記

この例では、2 つの暗号だけが一覧表示されますが、実際の例はより多くの暗号が使用されます。

1.2.12. Open SSL プロバイダーで TLS 1.3 プロトコルのサポートを可能にする

ssl-context 設定で cipher-suite-names 属性を設定して、TLS の OpenSSL プロバイダーで TLS 1.3 プロトコルのサポートを有効にできます。JBoss EAP が Open SSL TLS プロバイダーを使用するように設定するには、次のいずれかの方法を選択します。

  • Elytron サブシステムがデフォルトで Open SSL TLS プロバイダーを使用するように設定します。
  • server-ssl-context コンポーネントまたは client-ssl-context コンポーネントの providers 属性を設定して、Open SSL TLS プロバイダーを使用します。
重要

TLS 1.3 を JDK 11 で実行時のパフォーマンスは、TLS 1.2 と比較すると、低下する可能性があります。これは、クライアントがサーバーに対して非常に多くの TLS 1.3 要求を行った場合に発生する可能性があります。新しい JDK バージョンにアップグレードさせることで、パフォーマンスを向上できます。実稼働環境で有効にする前に、TLS 1.3 を使用する設定で、パフォーマンス低下がないかをテストします。

前提条件

  • アプリケーションに対して、一方向の SSL/TLS または双方向の SSL/TLS を有効にしておく。

手順

  1. 次のいずれかの方法を選択して、JBoss EAP 7.4 インスタンスが Open SSL TLS プロバイダーを使用するように設定します。

    1. elytron サブシステムがデフォルトで Open SSL TLS プロバイダーを使用するように設定します。これには、デフォルトの final-providers 設定 (この設定ではグローバルにプロバイダーをすべて登録し終えてから Open SSL TLS プロバイダーが登録される) を削除します。

      /subsystem=elytron:undefine-attribute(name=final-providers)
      reload

      次に、グローバルに登録する全プロバイダーの前に、Open SSL TLS プロバイダーを優先的に登録します。

      /subsystem=elytron:write-attribute(name=initial-providers, value=combined-providers)
    2. server-ssl-context または client-ssl-contextproviders 属性を設定して、Open SSL TLS プロバイダーを使用します。

      server SSC という既存の server-ssl-contextprovider 属性を設定する例です。

      /subsystem=elytron/server-ssl-context=serverSSC:write-attribute(name=providers,value=openssl)
      reload

  2. オプション: TLS 1.3 プロトコル以外のプロトコルを使用するように ssl-context を設定した場合は、ssl-contextprotocols 属性に TLS 1.3 プロトコルを含めるように設定する必要があります。

    /subsystem=elytron/server-ssl-context=serverSSC:write-attribute(name=protocols,value=[TLSv1.3])
  3. ssl-context 設定で cipher-suite-names 属性を設定して、OpenSSL プロバイダーで TLS 1.3 プロトコルのサポートを有効にできます。次の例では、cipher-suit-names 属性の値として、TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256 を設定しています。

    /subsystem=elytron/server-ssl-context=serverSSC:write-attribute(name=cipher-suite-names,value=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256)
  4. JBoss EAP インスタンスをリロードします。

    reload
  5. オプション: TLS 1.3 プロトコルと TLS 1.3 サイファースイートを使用して、サーバーとの SSL 暗号化接続を正常に確立できるかどうかをテストします。curl などのツールを使用して、設定の出力を確認します。

    curl -v https://<ip_address>:<ssl_port>

    TLS_AES_256_GCM_SHA384 が TLS 1.3 プロトコルで SSL 接続を保護していることを示す出力例です。

    SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
    * ALPN, server accepted to use h2
    * Server certificate:
    *  subject: C=Unknown; ST=Unknown; L=Unknown; O=Unknown; OU=Unknown; CN=localhost
    *  start date: Oct  6 14:58:16 2020 GMT
    *  expire date: Nov  5 15:58:16 2020 GMT
    *  issuer: C=Unknown; ST=Unknown; L=Unknown; O=Unknown; OU=Unknown; CN=localhost
    *  SSL certificate verify result: self signed certificate (18), continuing anyway.

関連情報

1.2.13. FIPS 140-2 準拠暗号化

以下の方法のいずれかを使用することで、Red Hat Enterprise Linux で FIPS 140-2 に準拠する暗号を設定できます。

1.2.13.1. Red Hat Enterprise Linux 7 以降での SSL/TLS の FIPS 140-2 暗号化の有効化。

Undertow は、SSL/TLS に FIPS 140-2 準拠の暗号を使用するように設定できます。この設定例の範囲は、FIPS モードで Mozilla NSS ライブラリーを使用する Red Hat Enterprise Linux 7 以降に限定されます。

重要

インストール済みの Red Hat Enterprise Linux は、FIPS 140-2 に準拠するようにすでに設定されています。詳細は、Red Hat カスタマーポータルにある How can I make RHEL 6 or RHEL 7 FIPS 140-2 compliant? を参照してください。

警告

FIPS モードで JBoss EAP を実行するとき TLS 1.2 プロトコルを使用すると、NoSuchAlgorithmException が発生する可能性があります。この問題の詳細は、Red Hat カスタマーポータルにある NoSuchAlgorithmException: no such algorithm: SunTls12MasterSecret のソリューションを参照してください。

そのため、HTTP/2 には TLS 1.2 プロトコルが必要なため、HTTP/2 を FIPS モードで設定することはできません。FIPS モード (PKCS11) は TLS 1 および TLS 1.1 プロトコルをサポートしているため、以下を使用できます。

  • Oracle/OpenJDK の TLS 1.1
  • IBM java の TLS 1

SSL/TLS に FIPS 140-2 に準拠する暗号を使用するように Undertow を設定するには、以下を行う必要があります。

注記

OpenSSL プロバイダーにはプライベートキーが必要ですが、PKCS11 ストアから秘密鍵を取得することはできません。FIPS は、FIPS 準拠の暗号化モジュールからの暗号化されていない鍵のエクスポートを許可しません。そのため、elytron サブシステムとレガシーのセキュリティーの両方では、FIPS モードで TLS の OpenSSL プロバイダーを使用することはできません。

NSS データベースの設定
  1. NSS データベースを格納するために、適切なユーザーが所有するディレクトリーを作成します。

    NSS データベースディレクトリーを作成するコマンドの例

    $ mkdir -p /usr/share/jboss-as/nssdb
    $ chown jboss /usr/share/jboss-as/nssdb
    $ modutil -create -dbdir /usr/share/jboss-as/nssdb

    注記
    • RHEL7 以前のデフォルトのデータベース形式である DBM ファイル形式は廃止されました。NSS は、デフォルトで SQL を使用するようになりました
    • jboss ユーザーはあくまで例です。これは、オペレーティングシステムで、JBoss EAP を実行できる、アクティブなユーザーに置き換えてください。
  2. NSS 設定ファイル (/usr/share/jboss-as/nss_pkcsll_fips.cfg) を作成します。

    以下を指定する必要があります。

    • 名前
    • NSS ライブラリーが置かれているディレクトリー
    • 以前のステップで NSS データベースが作成されたディレクトリー

      例: nss_pkcsll_fips.cfg

      name = nss-fips
      nssLibraryDirectory=/usr/lib64
      nssSecmodDirectory=/usr/share/jboss-as/nssdb
      nssDbMode = readOnly
      nssModule = fips

      注記

      64 ビットバージョンの Red Hat Enterprise Linux 6 使用していない場合は、nssLibraryDirectory/usr/lib64 ではなく、/usr/lib に置き換えます。

  3. Java セキュリティー設定ファイルを編集します。この設定ファイルは JVM 全体に影響しますが、以下のいずれかの手段で定義できます。

    • デフォルトの設定ファイル java.security は JDK で入手できます。このファイルは、他のセキュリティー設定ファイルが指定されていない場合に使用されます。このファイルの場所は、JDK ベンダーのドキュメントを参照してください。
    • カスタムの Java セキュリティー設定ファイルを定義し、-Djava.security.properties=/path/to/java.security.properties を使用して参照します。この方法で参照されると、デフォルトのセキュリティーファイルの設定が上書きされます。このオプションは、異なるセキュリティー設定を必要とする同じホストで複数の JVM を実行している場合に便利です。

      以下の行を Java セキュリティー設定ファイルに追加します。

      例: java.security

      security.provider.1=sun.security.pkcs11.SunPKCS11 /usr/share/jboss-as/nss_pkcsll_fips.cfg

      注記

      上記の行で指定されている nss_pkcsll_fips.cfg 設定ファイルは、前のステップで作成したファイルです。

      以下のリンクを設定ファイルから更新する必要があります。

      security.provider.5=com.sun.net.ssl.internal.ssl.Provider

      上記を以下に変更します。

      security.provider.5=com.sun.net.ssl.internal.ssl.Provider SunPKCS11-nss-fips
      重要

      このファイルの他の security.provider.X 行 (例: security.provider.2) には、このプロバイダーに優先順位が指定されるように X の値を増やす必要があります。

  4. 前の手順で作成した NSS データベースディレクトリーで modutil コマンドを実行して、FIPS モードを有効化します。

    modutil -fips true -dbdir /usr/share/jboss-as/nssdb
    注記

    この時点では、NSS 共有オブジェクトの一部に対するライブラリー署名の再生成を求めるセキュリティーライブラリーエラーが発生することがあります。

  5. FIPS トークンにパスワードを設定します。

    トークンの名前は、NSS FIPS 140-2 Certificate DB である 必要があります

    modutil -changepw "NSS FIPS 140-2 Certificate DB" -dbdir /usr/share/jboss-as/nssdb
    重要

    FIPS トークンに使用されるパスワードは、FIPS に準拠したパスワードである必要があります。パスワードの強度が不十分な場合は、以下のようなエラーが発生することがあります。ERROR: Unable to change password on token "NSS FIPS 140-2 Certificate DB"

  6. NSS ツールを使用して証明書を作成します。

    コマンド例

    $ certutil -S -k rsa -n undertow -t "u,u,u" -x -s "CN=localhost, OU=MYOU, O=MYORG, L=MYCITY, ST=MYSTATE, C=MY" -d /usr/share/jboss-as/nssdb

  7. 以下のコマンドを実行することで、JVM が PKCS11 キーストアから秘密鍵を読み取りできることを確認します。

    $ keytool -list -storetype pkcs11
重要

FIPS を有効にすると、JBoss EAP の起動時に以下のエラーが発生することがあります。

10:16:13,993 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-1) MSC000001: Failed to start service jboss.server.controller.management.security_realm.ApplicationRealm.key-manager: org.jboss.msc.service.StartException in service jboss.server.controller.management.security_realm.ApplicationRealm.key-manager: WFLYDM0018: Unable to start service
	at org.jboss.as.domain.management.security.AbstractKeyManagerService.start(AbstractKeyManagerService.java:85)
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1963)
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1896)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.security.KeyStoreException: FIPS mode: KeyStore must be from provider SunPKCS11-nss-fips
	at sun.security.ssl.KeyManagerFactoryImpl$SunX509.engineInit(KeyManagerFactoryImpl.java:67)
	at javax.net.ssl.KeyManagerFactory.init(KeyManagerFactory.java:256)
	at org.jboss.as.domain.management.security.AbstractKeyManagerService.createKeyManagers(AbstractKeyManagerService.java:130)
	at org.jboss.as.domain.management.security.AbstractKeyManagerService.start(AbstractKeyManagerService.java:83)
	... 5 more

FIPS 140-2 準拠の暗号を使用しないレガシーコア管理認証にデフォルトのキーマネージャーなどの既存のキーマネージャーが設定されている場合は、このメッセジーが表示されます。

SSL/TLS への FIPS 140-2 対応暗号の管理 CLI の設定

SSL/TLS 対応の FIPS 140-2 準拠暗号化が有効な環境で動作するように、JBoss EAP 管理 CLI を設定する必要があります。デフォルトでは、このような環境で管理 CLI を使用しようとすると、次の例外が表示されます。org.jboss.as.cli.CliInitializationException: java.security.KeyManagementException: FIPS mode: only SunJSSE TrustManagers may be used

  • 従来の security サブシステムを使用している場合:

    以下のように、jboss-cli.sh ファイルの javax.net.ssl.keyStore および javax.net.ssl.trustStore システムプロパティーを更新します。

    JAVA_OPTS="$JAVA_OPTS -Djavax.net.ssl.trustStore=NONE -Djavax.net.ssl.trustStoreType=PKCS11"
    JAVA_OPTS="$JAVA_OPTS -Djavax.net.ssl.keyStore=NONE -Djavax.net.ssl.keyStoreType=PKCS11 -Djavax.net.ssl.keyStorePassword=P@ssword123"
  • elytron サブシステムを使用している場合は、以下の手順に従います。

    1. 以下の内容を含む管理 CLI の XML 設定ファイルを作成します。

      例: cli-wildfly-config.xml

      <configuration>
        <authentication-client xmlns="urn:elytron:client:1.2">
          <key-stores>
            <key-store name="truststore" type="PKCS11">
              <key-store-clear-password password="P@ssword123"/>
            </key-store>
          </key-stores>
          <ssl-contexts>
            <ssl-context name="client-cli-context">
              <trust-store key-store-name="truststore"/>
              <cipher-suite selector="${cipher.suite.filter}"/>
              <protocol names="TLSv1.1"/>
            </ssl-context>
          </ssl-contexts>
          <ssl-context-rules>
            <rule use-ssl-context="client-cli-context"/>
          </ssl-context-rules>
        </authentication-client>
      </configuration>

      注記

      IBM JDK を使用している場合は、必要な設定を行うための IBM 管理 CLI 設定の例 を参照してください。

    2. 管理 CLI の起動時に、-Dwildfly.config.url プロパティーを使用して管理 CLI スクリプトに設定ファイルを渡します。以下に例を示します。

      $ jboss-cli.sh -Dwildfly.config.url=cli-wildfly-config.xml
Elytron および Undertow サブシステムの設定
  1. FIPS 140-2 準拠暗号化 key-storekey-managerssl-context を追加します。

    /subsystem=elytron/key-store=fipsKS:add(type=PKCS11,provider-name="SunPKCS11-nss-fips",credential-reference={clear-text="P@ssword123"})
    
    /subsystem=elytron/key-manager=fipsKM:add(key-store=fipsKS,algorithm="SunX509",provider-name=SunPKCS11-nss-fips,credential-reference={clear-text="P@ssword123"})
    
    /subsystem=elytron/server-ssl-context=fipsSSC:add(key-manager=fipsKM,protocols=["TLSv1.1"])
  2. undertow サブシステムを更新して、新しい ssl-context を使用します。

    注記

    https-listener には、常に security-realm または ssl-context が設定されている必要があります。2 つの設定間で変更する場合は、以下に示すように、コマンドを単一のバッチで実行する必要があります。

    batch
    /subsystem=undertow/server=default-server/https-listener=https:undefine-attribute(name=security-realm)
    /subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=ssl-context,value=fipsSSC)
    run-batch
    
    reload

FIPS モードの elytron サブシステムでは、FIPS モードの OpenJDK および Oracle JDK により、カスタム KeyManager または TrustManager 実装に基づいた高度な機能の使用が制限されます。以下の設定属性はサーバー上では機能しません。

  • server-ssl-context.security-domain
  • trust-manager.certificate-revocation-list
従来のコア管理認証を使用した Undertow の設定

必要に応じて、elytron サブシステムの代わりに従来のコア管理認証を使用して、SSL/TLS の FIPS 140-2 準拠暗号化の設定を完了できます。

  1. SSL/TLS を使用するように Undertow を設定します。

    注記

    以下のコマンドはバッチモードで実行する必要があります。あるいは、ssl サーバーアイデンティティーを追加した後にサーバーをリロードする必要があります。以下の例はバッチモードを使用しています。

    batch
    
    /core-service=management/security-realm=HTTPSRealm:add
    
    /core-service=management/security-realm=HTTPSRealm/server-identity=ssl:add(keystore-provider=PKCS11, keystore-password="strongP@ssword1")
    
    /subsystem=undertow/server=default-server/https-listener=https:add(socket-binding=https, security-realm=HTTPSRealm, enabled-protocols="TLSv1.1")
    
    run-batch

    Undertow を SSL / TLS に設定する基本的な詳細は、Setting up an SSL/TLS for Applications で説明されています。

  2. Undertow によって使用される暗号スイートを設定します。

    SSL/TLS を設定した後は、特定のセットの暗号スイートを有効にするために https リスナーとセキュリティーレルムを設定する必要があります。

    必要な暗号スイート

    SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_anon_WITH_AES_128_CBC_SHA, TLS_ECDH_anon_WITH_AES_256_CBC_SHA

    https リスナーに暗号スイートを有効にする基本的な方法は、暗号スイートについて で説明されています。https リスナーで暗号化スイートを有効にするには、以下を行います。

    HTTPS リスナーでの暗号スイートを有効にするコマンドの例

    /subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=enabled-cipher-suites,value="SSL_RSA_WITH_3DES_EDE_CBC_SHA,SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_DSS_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_anon_WITH_AES_128_CBC_SHA,TLS_ECDH_anon_WITH_AES_256_CBC_SHA")

  3. セキュリティーレルムで暗号スイートを有効にします。

    セキュリティーレルムで暗号スイートを有効化するコマンドの例

    /core-service=management/security-realm=HTTPSRealm/server-identity=ssl:write-attribute(name=enabled-cipher-suites, value=[SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_anon_WITH_AES_128_CBC_SHA, TLS_ECDH_anon_WITH_AES_256_CBC_SHA])

1.2.13.2. Bouncy Castle を使用した SSL/TLS の FIPS 140-2 暗号化の有効化

Undertow は、SSL/TLS に FIPS 140-2 準拠の暗号を使用するように設定できます。この設定例の範囲は、Red Hat Enterprise Linux 7 以降に限定されます。Bouncy Castle JAR は Red Hat によって提供されていないため、Bouncy Castle から直接取得する必要があります。

前提条件
SSL/TLS への FIPS 140-2 対応暗号の管理 CLI の設定

SSL/TLS 対応の FIPS 140-2 準拠暗号化が有効な環境で動作するように、JBoss EAP 管理 CLI を設定する必要があります。

  1. 以下の内容を含む管理 CLI の XML 設定ファイルを作成します。

    例: cli-wildfly-config.xml

    <configuration>
      <authentication-client xmlns="urn:elytron:client:1.2">
        <key-stores>
          <key-store name="truststore" type="BCFKS">
            <file name="${truststore.location}" />
            <key-store-clear-password password="${password}" />
          </key-store>
          <key-store name="keystore" type="BCFKS">
            <file name="${keystore.location}" />
            <key-store-clear-password password="${password}" />
          </key-store>
        </key-stores>
        <ssl-contexts>
          <ssl-context name="client-cli-context">
            <key-store-ssl-certificate algorithm="PKIX" key-store-name="keystore">
              <key-store-clear-password password="${password"} />
            </key-store-ssl-certificate>
            <trust-store key-store-name="truststore"/>
            <trust-manager algorithm="PKIX">
            </trust-manager>
            <cipher-suite selector="TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,TLS_DHE_DSS_WITH_AES_256_CBC_SHA,TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CCM,TLS_RSA_WITH_AES_128_CCM"/>
            <protocol names="TLSv1.2"/>
          </ssl-context>
        </ssl-contexts>
        <ssl-context-rules>
          <rule use-ssl-context="client-cli-context"/>
        </ssl-context-rules>
      </authentication-client>
    </configuration>

  2. 管理 CLI の起動時に、-Dwildfly.config.url プロパティーを使用して管理 CLI スクリプトに設定ファイルを渡します。以下に例を示します。

    $ jboss-cli.sh -Dwildfly.config.url=cli-wildfly-config.xml
Elytron および Undertow サブシステムの設定
  1. FIPS 140-2 準拠暗号化 key-storekey-managerssl-context を追加します。キーストアを定義した場合は、そのタイプは BCFKS である必要があります。

    /subsystem=elytron/key-store=fipsKS:add(path=KEYSTORE,relative-to=jboss.server.config.dir,credential-reference={clear-text=STORE_PASSWORD},type="BCFKS")
    
    /subsystem=elytron/key-manager=fipsKM:add(key-store=fipsKS,algorithm="PKIX",credential-reference={clear-text=PASSWORD})
    
    /subsystem=elytron/server-ssl-context=fipsSSC:add(key-manager=fipsKM,protocols=["TLSv1.2"],cipher-suite-filter="TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, TLS_DHE_DSS_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_256_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CCM,TLS_RSA_WITH_AES_128_CCM")
  2. undertow サブシステムを更新して、新しい ssl-context を使用します。

    注記

    https-listener には、常に security-realm または ssl-context が設定されている必要があります。2 つの設定間で変更する場合は、以下に示すように、コマンドを単一のバッチで実行する必要があります。

    batch
    /subsystem=undertow/server=default-server/https-listener=https:undefine-attribute(name=security-realm)
    /subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=ssl-context,value=fipsSSC)
    run-batch
    
    reload

1.2.14. IBM JDK における FIPS 140-2 準拠暗号化

IBM JDK では、マルチプラットフォーム用の IBM Java Cryptographic Extension (JCE) IBMJCEFIPS プロバイダーと IBM Java Secure Sockets Extension (JSSE) FIPS 140-2 Cryptographic Module (IBMJSSE2) は、FIPS 140-2 準拠暗号化を提供します。

IBMJCEFIPS プロバイダーの詳細は、IBM Documentation for IBM JCEFIPS および NIST IBMJCEFIPS – Security Policy を参照してください。IBMJSSE2 の詳細は、Running IBMJSSE2 in FIPS mode を参照します。

1.2.14.1. キーストレージ

IBM JCE はキーストアを提供しません。このキーはコンピューターに保存され、その物理境界は残しません。このキーがコンピューター間で移動している場合は暗号化する必要があります。

FIPS 準拠のモードで keytool を実行するには、以下のような各コマンドで -providerClass を使用します。

keytool -list -storetype JCEKS -keystore mystore.jck -storepass mystorepass -providerClass com.ibm.crypto.fips.provider.IBMJCEFIPS

1.2.14.2. 管理 CLI の設定

IBM JDK で FIPS 140-2 準拠の暗号の管理 CLI を設定 するには、以下のように、IBM JDK に固有の管理 CLI 設定ファイルを使用する必要があります。

例: cli-wildfly-config-ibm.xml

<configuration>
  <authentication-client xmlns="urn:elytron:client:1.2">
    <key-stores>
      <key-store name="truststore" type="JKS">
        <file name="/path/to/truststore"/>
        <key-store-clear-password password="P@ssword123"/>
      </key-store>
    </key-stores>
    <ssl-contexts>
      <ssl-context name="client-cli-context">
        <trust-store key-store-name="truststore"/>
        <cipher-suite selector="${cipher.suite.filter}"/>
        <protocol names="TLSv1"/>
      </ssl-context>
    </ssl-contexts>
    <ssl-context-rules>
      <rule use-ssl-context="client-cli-context"/>
    </ssl-context-rules>
  </authentication-client>
</configuration>

1.2.14.3. FIPS プロバイダー情報の確認

サーバーが使用する IBMJCEFIPS に関する情報を確認するには、-Djavax.net.debug=truestandalone.conf または domain.conf ファイルに追加することでデバッグレベルのロギングを有効にします。FIPS プロバイダーの情報は、server.log ファイルに記録されます。以下に例を示します。

04:22:45,685 INFO  [stdout] (http-/127.0.0.1:8443-1) JsseJCE:  Using MessageDigest SHA from provider IBMJCEFIPS version 1.7
04:22:45,689 INFO  [stdout] (http-/127.0.0.1:8443-1) DHCrypt:  DH KeyPairGenerator  from provider from init IBMJCEFIPS version 1.7
04:22:45,754 INFO  [stdout] (http-/127.0.0.1:8443-1) JsseJCE:  Using KeyFactory DiffieHellman from provider IBMJCEFIPS version 1.7
04:22:45,754 INFO  [stdout] (http-/127.0.0.1:8443-1) JsseJCE:  Using KeyAgreement DiffieHellman from provider IBMJCEFIPS version 1.7
04:22:45,754 INFO  [stdout] (http-/127.0.0.1:8443-1) DHCrypt:  DH KeyAgreement  from provider IBMJCEFIPS version 1.7
04:22:45,754 INFO  [stdout] (http-/127.0.0.1:8443-1) DHCrypt:  DH KeyAgreement  from provider from initIBMJCEFIPS version 1.7

1.2.15. JVM が FIPS モードで実行されているときにマネージドドメインを起動する

各ホストコントローラーとマスタードメインコントローラーを更新して、通信に SSL/TLS を使用します。

前提条件

開始する前に、以下の前提条件を完了していることを確認してください。

  • マネージドドメインを実装している。

    マネージドドメインの設定の詳細は、JBoss EAP設定ガイド ドメイン管理 セクションを参照してください。

  • FIPS を設定している。

    FIPS の設定の詳細は、Red Hat Enterprise Linux 7 以降での SSL/TLS の FIPS 140-2 暗号化の有効化 を参照してください。

  • 必要な証明書をすべて作成し、ドメインコントローラーの証明書を各コントローラーのトラストストアにインポートしている。
警告

Red Hat では、影響するすべてのパッケージで TLSv1.1 を利用するために SSLv2、SSLv3、および TLSv1.0 を明示的に無効化することを推奨しています。

  1. マスタードメインコントローラーで、NSS データベースを PKCS11 プロバイダーとして使用するように設定された SSL/TLS セキュリティーレルムを作成します。

    例: マスタードメインコントローラーのセキュリティーレルム

    <security-realm name="HTTPSRealm">
        <server-identities>
            <ssl>
                <engine enabled-protocols="TLSv1.1"/>
                <keystore provider="PKCS11" keystore-password="strongP@ssword1"/>
            </ssl>
        </server-identities>
        <authentication>
            <local default-user="\$local"/>
            <properties path="https-users.properties" relative-to="jboss.domain.config.dir"/>
        </authentication>
    </security-realm>

  2. 各ホストコントローラーで、認証に SSL/TLS トラストストアを使用してセキュリティーレルムを作成します。

    例: 各ホストコントローラーのセキュリティーレルム

    <security-realm name="HTTPSRealm">
      <authentication>
        <truststore provider="PKCS11" keystore-password="strongP@ssword1"/>
      </authentication>
    </security-realm>

    注記

    各ホストでこのプロセスを繰り返します。

  3. 作成したセキュリティーレルムを使用して、マスタードメインコントローラーの HTTP インターフェイスを保護します。

    例: HTTP インターフェイス

    <management-interfaces>
        <http-interface security-realm="HTTPSRealm">
            <http-upgrade enabled="true"/>
            <socket interface="management" port="${jboss.management.http.port:9990}"/>
        </http-interface>
    </management-interfaces>

  4. 各ホストコントローラーで SSL/TLS レルムを使用して、マスタードメインコントローラーに接続します。

    マスタードメインコントローラーへの接続に使用されるセキュリティーレルムを更新します。サーバーが動作していない場合に、ホストコントローラーの設定ファイル (host.xmlhost-slave.xml など) を変更します。

    例: ホストコントローラー設定ファイル

    <domain-controller>
      <remote security-realm="HTTPSRealm">
        <discovery-options>
          <static-discovery name="primary" protocol="${jboss.domain.master.protocol:remote}" host="${jboss.domain.master.address}" port="${jboss.domain.master.port:9990}"/>
        </discovery-options>
      </remote>
    </domain-controller>

  5. 各サーバーがホストコントローラーに接続する方法を更新します。

    例: サーバー設定

    <server name="my-server" group="my-server-group">
      <ssl ssl-protocol="TLS" trust-manager-algorithm="PKIX" truststore-type="PKCS11" truststore-password="strongP@ssword1"/>
    </server>

  6. マネージドドメインで双方向 SSL/TLS を設定します。

    双方向 SSL/TLS を有効にするには、マスタードメインコントローラーの SSL/TLS セキュリティーレルムにトラストストア認証メソッドを追加します。以下の管理 CLI コマンドを実行します。

    /host=master/core-service=management/security-realm=HTTPSRealm/authentication=truststore:add(keystore-provider="PKCS11",keystore-password="strongP@ssword1")
    
    reload --host=master

    SSL サーバーアイデンティティーを持つように各ホストコントローラーのセキュリティーレルムを更新する必要もあります。以下の管理 CLI コマンドを実行します。

    /host=host1/core-service=management/security-realm=HTTPSRealm/server-identity=ssl:add(keystore-provider=PKCS11, keystore-password="strongP@ssword1",enabled-protocols=["TLSv1.1"])
    
    reload --host=host1
    重要

    また、各ホストの証明書がドメインコントローラーのトラストストアにインポートされることを確認する必要があります。

1.2.16. Red Hat Single Sign-On での管理コンソールのセキュア化

elytron サブシステムを使用すると、Red Hat シングルサインオンで JBoss EAP 管理コンソールをセキュア化できます。

注記

この機能はスタンドアロンサーバーを実行する場合のみ利用でき、マネージドドメイン実行時にはサポートされません。管理 CLI をセキュアにする Red Hat Single Sign-On の使用はサポートされません。

以下の手順に従い、Red Hat Single Sign-On を設定し、JBoss EAP 管理コンソールのユーザーを認証します。

JBoss EAP 管理用の Red Hat Single Sign-On サーバーの設定
  1. Red Hat Single Sign-On サーバーをダウンロードしてインストールします。基本的な手順については、Red Hat Single Sign-On Getting Started Guide を参照してください。
  2. Red Hat Single Sign-On サーバーを起動します。

    この手順では、ポートオフセット 100 でサーバーを起動したことを前提とします。

    $ RHSSO_HOME/bin/standalone.sh -Djboss.socket.binding.port-offset=100
  3. http://localhost:8180/auth/ で Red Hat Single Sign-On 管理コンソールにログインします。

    Red Hat Single Sign-On 管理コンソールに初めてアクセスすると、初期管理ユーザーを作成するように求められます。

  4. wildfly-infra という名前の新規レルムを作成します。

    1. レルム名の横にあるドロップダウンメニューで、Add realm をクリックし、Name フィールドに wildfly-infra を入力し、Create をクリックします。
  5. wildfly-console というクライアントアプリケーションを作成します。

    重要

    このクライアントアプリケーションの名前は wildfly-consoleする必要があります

    1. Clients を選択し、Create をクリックします。
    2. Client ID フィールドに wildfly-console を入力し、Save をクリックします。
    3. 表示される Settings 画面で Access Typepublic に設定し、Valid Redirect URIshttp://localhost:9990/console/* に、Web Originshttp://localhost:9990 に設定し、Save をクリックします。
  6. wildfly-management というクライアントアプリケーションを作成します。

    1. Clients を選択し、Create をクリックします。
    2. Client ID フィールドに wildfly-management を入力し、Save をクリックします。
    3. 表示される Settings 画面で、Access Typebearer-only に設定し、Save をクリックします。
  7. JBoss EAP 管理コンソールへのアクセスを付与するためのロールを作成します。

    1. Roles を選択して Add Role をクリックします。
    2. Role Name フィールドに大文字で ADMINISTRATOR を入力し、Save をクリックします。

      以下の手順では、ADMINISTRATOR ロールを使用しますが、その他のロールもサポートされています。詳細は、JBoss EAP のセキュリティーアーキテクチャーロールベースのアクセス制御 を参照してください。

  8. ユーザーを作成し、ADMINISTRATOR ロールを割り当てます。

    1. Users を選択して Add user をクリックします。
    2. Username フィールドに jboss を入力して Save をクリックします。
    3. Credentials タブを選択し、このユーザーのパスワードを設定します。
    4. Role Mappings タブを選択し、ADMINISTRATOR を選択して Add selected をクリックし、このユーザーにロールを追加します。
JBoss EAP に Red Hat Single Sign-On クライアントアダプターをインストールする
  1. Download the Red Hat Single Sign-On client adapter for JBoss EAP 7 from the ソフトウェアダウンロードページ から JBoss EAP 7 の Red Hat Single Sign-On クライアントアダプターをダウンロードします。
  2. このファイルを JBoss EAP インストールのルートディレクトリーにデプロイメントします。
  3. adapter-elytron-install-offline.cli スクリプトを実行し、JBoss EAP のインストールを設定します。

    $ EAP_HOME/bin/jboss-cli.sh --file=adapter-elytron-install-offline.cli
    重要

    このスクリプトにより、keycloak サブシステムと、elytron および undertow サブシステムのその他の必要なリソースが standalone.xml に追加されます。別の設定ファイルを使用する必要がある場合は、必要に応じてスクリプトを変更してください。

Red Hat Single Sign-On を使用するように JBoss EAP を設定する
  1. EAP_HOME/bin/ ディレクトリーで、以下の内容を含む protect-eap-mgmt-services.cli という名前のファイルを作成します。

    # Create a realm for both JBoss EAP console and mgmt interface
    /subsystem=keycloak/realm=wildfly-infra:add(auth-server-url=http://localhost:8180/auth,realm-public-key=REALM_PUBLIC_KEY)
    
    # Create a secure-deployment in order to protect mgmt interface
    /subsystem=keycloak/secure-deployment=wildfly-management:add(realm=wildfly-infra,resource=wildfly-management,principal-attribute=preferred_username,bearer-only=true,ssl-required=EXTERNAL)
    
    # Protect HTTP mgmt interface with Keycloak adapter
    /core-service=management/management-interface=http-interface:undefine-attribute(name=security-realm)
    /subsystem=elytron/http-authentication-factory=keycloak-mgmt-http-authentication:add(security-domain=KeycloakDomain,http-server-mechanism-factory=wildfly-management,mechanism-configurations=[{mechanism-name=KEYCLOAK,mechanism-realm-configurations=[{realm-name=KeycloakOIDCRealm,realm-mapper=keycloak-oidc-realm-mapper}]}])
    /core-service=management/management-interface=http-interface:write-attribute(name=http-authentication-factory,value=keycloak-mgmt-http-authentication)
    /core-service=management/management-interface=http-interface:write-attribute(name=http-upgrade, value={enabled=true, sasl-authentication-factory=management-sasl-authentication})
    
    # Enable RBAC where roles are obtained from the identity
    /core-service=management/access=authorization:write-attribute(name=provider,value=rbac)
    /core-service=management/access=authorization:write-attribute(name=use-identity-roles,value=true)
    
    # Create a secure-server in order to publish the JBoss EAP console configuration via mgmt interface
    /subsystem=keycloak/secure-server=wildfly-console:add(realm=wildfly-infra,resource=wildfly-console,public-client=true)
    
    # reload
    reload
  2. このファイルでの REALM_PUBLIC_KEY を公開鍵の値に置き換えます。この値を取得するには、Red Hat Single Sign-On 管理コンソールにログインし、wildfly-infra レルムを選択して Realm Settings Keys の順に選択し、Public key をクリックします。
  3. JBoss EAP を起動します。

    $ EAP_HOME/bin/standalone.sh
    重要

    Red Hat Single Sign-On クライアントアダプターを取り付けるとき adapter-elytron-install-offline.cli スクリプトを変更して、standalone.xml 以外の設定ファイルを使用する場合は、その設定を使用して JBoss EAP を起動するようにしてください。

  4. protect-eap-mgmt-services.cli スクリプトを実行します。

    $ EAP_HOME/bin/jboss-cli.sh --connect --file=protect-eap-mgmt-services.cli

http://localhost:9990/console/ で JBoss EAP 管理コンソールにアクセスすると、ログインのために Red Hat Single Sign-On にリダイレクトされ、認証に成功したときに JBoss EAP 管理コンソールにリダイレクトされます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.