1.11. SSL/TLS の追加の Elytron コンポーネント


一方向 SSL/TLS および双方向 SSL/TLS の設定に関する基本概念は以下のとおりです。

Elytron は SSL/TLS を設定するための追加のコンポーネントも提供します。

1.11.1. Ldap-key-store の使用

Ldap-key-store を使用すると、LDAP サーバーに保存されているキーストアを使用できます。ldap-key-storekey-store と同じように使用できます。

注記

Jakarta Management ObjectName を使用して LDAP 認証情報を復号化することはできません。代わりに、認証情報は認証情報ストアを使用してセキュア化できます。クレデンシャルストアの詳細は、Elytron のクレデンシャルストア を参照してください。

ldap-key-store を作成して使用するには以下の手順に従います。

  1. dir-context を設定します。

    JBoss EAP から LDAP サーバーに接続するには、URL を指定する dir-context と、サーバーへの接続に使用するプリンシパルを設定する必要があります。

    例: dir-context

    /subsystem=elytron/dir-context=exampleDC:add(url="ldap://127.0.0.1:10389", principal="uid=admin,ou=system", credential-reference={clear-text="secret"})

  2. ldap-key-store を設定します。

    ldap-key-store を設定する場合は、LDAP サーバーへの接続に使用する dir-context と、LDAP サーバーに保存されているキーストアの検索方法の両方を指定する必要があります。少なくとも、search-path を指定する必要があります。

    例: ldap-key-store

    /subsystem=elytron/ldap-key-store=ldapKS:add(dir-context=exampleDC, search-path="ou=Keystores,dc=wildfly,dc=org")

  3. ldap-key-store を使用します。

    ldap-key-store を定義したら、key-store を使用できるのと同じ場所で使用できます。たとえば、アプリケーションに 1 方向 SSL/TLS および 双方向 SSL/TLS を設定する際には ldap-key-store を使用できます。

ldap-key-store および他の Elytron コンポーネントの属性の完全リストは、Elytron サブシステムのコンポーネント を参照してください。

1.11.2. filtering-key-store の使用

Filtering-key-store を使用すると、既存の key-store からエイリアスのサブセットを公開し、key-store を使用できる場所と同じ場所で使用できます。たとえば、キーストアに alias1alias2、および alias3 が含まれ、alias1 および alias3 のみを公開する必要がある場合は、filtering-key-store を使用することで複数の方法を利用できます。

filtering-key-store を作成するには、以下の手順に従います。

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

    /subsystem=elytron/key-store=myKS:add(path=keystore.jks, relative-to=jboss.server.config.dir, credential-reference={clear-text=secret}, type=JKS)
  2. filtering-key-store を設定します。

    filtering-key-store を設定するとき、フィルター処理を行う key-store と、key-store からエイリアスをフィルター処理するための alias-filter を指定します。フィルターは、以下のいずれかの形式で指定できます。

    • alias1,alias3: 公開するエイリアスのコンマ区切りのリスト。
    • all:-alias2: リスト表示されているものを除いた、キーストアのすべてのエイリアスを公開。
    • none:+alias1:+alias3: リスト表示されるもの以外のエイリアスをキーストアに公開しない。

      この例では、コンマ区切りリストで alias1alias3 を公開します。

      /subsystem=elytron/filtering-key-store=filterKS:add(key-store=myKS, alias-filter="alias1,alias3")
      注記

      alias-filter 属性は、大文字と小文字を区別します。elytronAppServer などの大文字・小文字を合わせたエイリアスまたは大文字のエイリアスの使用は一部のキーストアプロバイダーで認識されない可能性があるため、elytronappserver などの小文字のエイリアスを使用することが推奨されます。

  3. filtering-key-store を使用します。

    filtering-key-store を定義したら、key-store を使用する場所と同じ場所で使用できます。たとえば、アプリケーションに 一方向 SSL/TLS および 双方向 SSL/TLS を設定する際に filtering-key-store を使用できます。

filtering-key-store および他の Elytron コンポーネントの属性の完全リストは、Elytron サブシステムのコンポーネント を参照してください。

1.11.3. キーストアの再読み込み

JBoss EAP に設定されたキーストアは、管理 CLI からリロードできます。これは、キーストアが参照する証明書に変更を加えた場合に便利です。

キーストアをリロードするには、以下を実行します。

/subsystem=elytron/key-store=httpsKS:load

1.11.4. キーマネージャーの再初期化

JBoss EAP で設定された key-manager は管理 CLI から再初期化できます。これは、キーストアリソースによって提供される証明書に変更を加え、サーバーを再起動せずにこの変更を新しい SSL 接続に適用する場合に役に立ちます。

注記

key-store がファイルベースの場合は、最初に読み込む必要があります。

/subsystem=elytron/key-store=httpsKS:load()

key-manager を初期化するには、以下を実行します。

/subsystem=elytron/key-manager=httpsKM:init()

1.11.5. トラストマネージャーの再初期化

管理 CLI または管理コンソールから JBoss EAP で設定された trust-manager を再初期化できます。これは、キーストアリソースによって提供される証明書に変更を加え、サーバーを再起動せずに新しい SSL 接続に変更を適用する必要がある場合に役立ちます。

管理 CLI からの信頼マネージャーの再初期化
注記

key-store がファイルベースの場合は、最初に読み込む必要があります。

/subsystem=elytron/key-store=httpsKS:load()

trust-manager を再初期化するには、以下を実行します。

/subsystem=elytron/trust-manager=httpsTM:init()
管理コンソールからのトラストマネージャーの再初期化
  1. 管理コンソールに移動し、Runtime タブをクリックします。
  2. Monitor 列の Security (Elytron) をクリックします。
  3. Security の列で、SSL View の順にクリックします。
  4. ナビゲーションペインで、Trust Manager をクリックします。
  5. 画面右上の Initialize をクリックして、trust-manager を再初期化します。

1.11.6. キーストアエイリアス

alias は、ストアに保存されているシークレットまたは認証情報を示します。key-store コンポーネントを使用してキーストアを elytron サブシステムに追加する場合は、alias 関連の key-store 操作を使用してキーストアの内容を確認できます。

エイリアスの各種操作は次のとおりです。

  • read-alias - キーストアからエイリアスを読み取ります。
  • read-aliases - キーストアからエイリアスを読み取ります。
  • remove-alias - キーストアからエイリアスを削除します。

たとえば、エイリアスを読み取るには、次を実行します。

/subsystem=elytron/key-store=httpsKS/:read-alias(alias=localhost)

1.11.7. client-ssl-context の使用

client-ssl-context は、JBoss EAP インスタンスが SSL 接続をクライアントとして作成する際に SSL コンテキストを提供するために使用されます (リモーティングで SSL を使用するなど)。

client-ssl-context を作成するには、以下の手順に従います。

  1. 必要に応じて、key-storekey-manager、および trust-manager コンポーネントを作成します。

    双方向 SSL/TLS 接続を確立する場合は、クライアント証明書とサーバー証明書用の別の key-store コンポーネント、クライアント key-store 用の key-manager、およびサーバー key-store 用の trust-manager を作成する必要があります。または、一方向 SSL/TLS 接続を行う場合は、サーバー証明書の key-store と、それを参照する trust-manager を作成する必要があります。キーストアおよびトラストストアの作成例は、Elytron サブシステムを使用してアプリケーションに対して双方向 SSL/TLS を有効化する セクションで参照できます。

  2. client-ssl-context を作成します。

    キーストア、トラストストア、およびその他の必要な設定オプションを参照する client-ssl-context を作成します。

    例: client-ssl-context

    /subsystem=elytron/client-ssl-context=exampleCSC:add(key-manager=clientKM, trust-manager=clientTM, protocols=["TLSv1.2"])

  3. client-ssl-context を参照します。

client-ssl-context および他の Elytron コンポーネントの属性の完全リストは、Elytron サブシステムのコンポーネント を参照してください。

1.11.8. server-ssl-context の使用

server-ssl-context は、サーバー側の SSL コンテキストを提供するために使用されます。SSL コンテキストの通常の設定の他に、暗号化スイートやプロトコルなどの追加項目を設定することが可能です。SSL コンテキストは、設定された追加項目をラップします。

  1. 必要に応じて、key-storekey-manager、および trust-manager コンポーネントを作成します。

    双方向 SSL/TLS 接続を確立する場合は、クライアント証明書とサーバー証明書用の別の key-store コンポーネント、サーバー key-store 用の key-manager、およびサーバー trust-store 用の trust-manager を作成する必要があります。または、一方向 SSL/TLS 接続を行う場合は、サーバー証明書の key-store と、それを参照する key-manager を作成する必要があります。キーストアおよびトラストストアの作成例は、Elytron サブシステムを使用してアプリケーションに対して双方向 SSL/TLS を有効化する セクションで参照できます。

  2. server-ssl-context を作成します。

    キーマネージャー、トラストマネージャー、またはその他の必要な設定オプションを参照する server-ssl-context を以下のオプションのいずれかを使用して作成します。

管理 CLI を使用したサーバー SSL コンテキストの追加
/subsystem=elytron/server-ssl-context=newServerSSLContext:add(key-manager=KEY_MANAGER,protocols=["TLSv1.2"])
重要

対応する HTTPS プロトコルを決定する必要があります。上記のコマンド例は TLSv1.2 を使用します。cipher-suite-filter 引数を使用して、許可される暗号スイートを指定でき、use-cipher-suites-order 引用して、サーバーの暗号スイートの順序を許可します。use-cipher-suites-order 属性はデフォルトで true に設定されます。これは、レガシー security サブシステムの動作とは異なります。その動作は、デフォルトで、クライアント暗号スイートの順序を許可します。

管理コンソールを使用したサーバー SSL コンテキストの追加
  1. 管理コンソールにアクセスします。詳細は、JBoss EAP設定ガイド 管理コンソール を参照してください。
  2. Configuration → Subsystems Security (Elytron) Other Settings と選択し、表示 をクリックします。
  3. SSL Server SSL Context の順にクリックし、Add をクリックして新しいサーバー SSL コンテキストを設定します。

server-ssl-context および他の Elytron コンポーネントの属性の完全リストは、Elytron サブシステムのコンポーネント を参照してください。

1.11.9. server-ssl-sni-context の使用

server-ssl-sni-context は、サーバー側の SNI 一致を提供するために使用されます。与えられたホスト名がいずれも一致しない場合のデフォルトとともに、ホスト名を SSL コンテキストに関連付けるためのマッチングルールを利用できます。SSL SNI コンテキストは、undertow サブシステムでコンテキストを定義する場合など、標準のサーバー SSL コンテキストの代わりに使用できます。

  1. 必要に応じて key-storekey-managertrust-manager、および server-ssl-context コンポーネントを作成します。server-ssl-sni-context を作成するには、サーバー SSL コンテキストが定義されている必要があります。
  2. server-ssl-context 要素に一致する情報を提供する server-ssl-sni-context を作成します。デフォルトの SSL コンテキストは、default-ssl-context 属性を使用して指定する必要があります。これは、一致しないホスト名が見つかった場合に使用されます。host-context-map は、さまざまな SSL コンテキストの一致に、コンマ区切りのホスト名リストを受け入れます。

    /subsystem=elytron/server-ssl-sni-context=SERVER_SSL_SNI_CONTEXT:add(default-ssl-context=DEFAULT_SERVER_SSL_CONTEXT,host-context-map={HOSTNAME=SERVER_SSL_CONTEXT,...})

    以下を使用して server-ssl-sni-context を定義します。これは serverssl SSL コンテキストにデフォルト設定され、www.example.com の着信リクエストを exampleSSL コンテキストに一致させます。

    /subsystem=elytron/server-ssl-sni-context=exampleSNIContext:add(default-ssl-context=serverSSL,host-context-map={www\\.example\\.com=exampleSSL})
注記

ホストのマッチングの属性値は正規表現として機能します。そのため、ドメイン名の区切りに使用されるピリオド (.) をエスケープしてください。

管理コンソールを使用した server-ssl-sni-context の設定
  1. 管理コンソールにアクセスします。詳細は、JBoss EAP設定ガイド 管理コンソール を参照してください。
  2. Configuration → Subsystems Security (Elytron) Other Settings と選択し、表示 をクリックします。
  3. SSL Server SSL SNI Context の順にクリックして、必要な ssl-sni-context を設定します。

Elytron コンポーネントの属性の完全リストは、Elytron サブシステムのコンポーネント を参照してください。

1.11.10. カスタム SSL コンポーネント

elytron サブシステムで SSL/TLS を設定する場合は、以下のコンポーネントのカスタム実装を提供および使用できます。

  • key-store
  • key-manager
  • trust-manager
  • client-ssl-context
  • server-ssl-context
警告

Java Secure Socket Extension (JSSE) の詳しい知識がない場合は、trust-manager 以外のコンポーネントのカスタム実装を提供することは推奨されません。

重要

FIPS を使用する場合は、カスタムトラストマネージャーまたはキーマネージャーを使用できません。これは、FIPS では、セキュリティー上の理由から、これらのマネージャーを JDK に組み込む必要があるためです。同様に、X509 エビデンスを検証する SecurityRealm を実装して、同様の動作を実現できます。

Elytron コンポーネントのカスタム実装を作成する場合、それらは適切な機能と要件を提供する必要があります。機能と要件の詳細は、JBoss EAPセキュリティーアーキテクチャーガイドの 性能および要件 セクションを参照してください。各コンポーネントの実装の詳細は、JDK ベンダーによって提供されます。

1.11.10.1. カスタムコンポーネントの Elytron への追加

以下の手順では、Elytron 内でカスタムコンポーネントを追加する方法について説明します。

  1. カスタムコンポーネントのプロバイダーが含まれる JAR をモジュールとして JBoss EAP に追加し、javax.api などの必要な依存関係を宣言します。

    module add --name=MODULE_NAME --resources=FACTORY_JAR --dependencies=javax.api,DEPENDENCY_LIST
    重要

    module 管理 CLI コマンドを使用したモジュールの追加および削除は、テクノロジープレビューとしてのみ提供されます。このコマンドは、マネージドドメインでの使用や、リモートによる管理 CLI への接続時には適していません。本番環境では、モジュールを手作業で追加および削除する必要があります。詳細は、JBoss EAP設定ガイドカスタムモジュールの手動作成 および 手作業によるカスタムモジュールの削除 を参照してください。

    テクノロジープレビューの機能は、Red Hat の本番環境のサービスレベルアグリーメント (SLA) ではサポートされず、機能的に完全ではないことがあるため、Red Hat は本番環境での使用は推奨しません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。

    テクノロジープレビュー機能のサポート範囲は、Red Hat カスタマーポータルの テクノロジープレビュー機能のサポート範囲 を参照してください。

  2. コンポーネントが elytron サブシステムに追加されると、java.util.ServiceLoader がプロバイダー検出に使用されます。または、provider-loader を定義してプロバイダーへの参照を指定することもできます。ローダーを作成する方法は 2 つあります。各コンポーネントには、1 つずつのみ実装する必要があります。

    • provider-loader を定義する際にプロバイダーを直接参照します。

      /subsystem=elytron/provider-loader=LOADER_NAME:add(class-names=[CLASS_NAME],module=MODULE_NAME)
    • META-INF/services/java.security.Provider にプロバイダーへの参照を含めます。この参照は、org.kohsuke.metainf-services@MetaInfServices アノテーションを使用する際に自動的に作成されます。この方法を使用する場合は、以下のように provider-loader からモジュールのみを参照する必要があります。

      /subsystem=elytron/provider-loader=LOADER_NAME:add(module=MODULE_NAME)
  3. 定義したプロバイダーを追加および参照するタイプに適切な要素を使用して、カスタムコンポーネントを Elytron の設定に追加します。

    /subsystem=elytron/COMPONENT_NAME=NEW_COMPONENT:add(providers=LOADER_NAME,...)

    たとえば、トラストマネージャーを定義するには、以下のコマンドにあるように trust-manager 要素が使用されます。

    例: カスタム信頼マネージャーの追加

    /subsystem=elytron/trust-manager=newTrustManager:add(algorithm=MyX509,providers=customProvider,key-store=sampleKeystore)

  4. 定義が完了すると、コンポーネントは他の要素から参照できるようになります。

関連情報

1.11.10.2. カスタム Elytron コンポーネントに引数を含める

以下に示すように、クラスが initialize メソッドを実装している場合は、カスタムコンポーネントに引数を含めることができます。

void initialize(final Map<String, String> configuration);

このメソッドにより、定義時にカスタムクラスが設定文字列のセットを受け取ることができます。これらは、コンポーネントを定義する際に configuration 属性を使用して渡されます。たとえば、以下の例では、myValue の値を持つ myAttribute という名前の属性を定義します。

/subsystem=elytron/COMPONENT_NAME=NEW_COMPONENT:add(class-name=CLASS_NAME,module=MODULE_NAME,configuration={myAttribute="myValue"}

1.11.10.3. Elytron でのカスタムトラストマネージャーの使用

カスタムトラストマネージャーを実装することで、Undertow で HTTPS、dir-context で LDAPS を使用する際、または Elytron が SSL 接続に使用される場所において、証明書の検証を拡張できます。このコンポーネントは、サーバーの信頼決定を行います。また、カスタムトラストマネージャーが使用される場合は、これらを実装することが強く推奨されます。

重要

FIPS を使用する場合、カスタムトラストマネージャーは利用できません。これは、FIPS では、セキュリティー上の理由から、これらのマネージャーを JDK に組み込む必要があるためです。同様に、X509 エビデンスを検証する SecurityRealm を実装して、同様の動作を実現できます。

カスタムストラストマネージャーの実装要件

カスタムトラストマネージャーを使用する場合は、以下を実装する必要があります。

  • X509ExtendedTrustManager インターフェイスを実装するトラストマネージャー。
  • TrustManagerFactorySpi を拡張するトラストマネージャーファクトリー。
  • トラストマネージャーファクトリーのプロバイダー。

JBoss EAP に追加するには、プロバイダーを JAR ファイルに含める必要があります。実装されたクラスはモジュールとして JBoss EAP に組み込む必要があります。 クラスはモジュールに置く必要はなく、モジュールの依存関係から読み込むことができます。

実装例

以下の例は、カスタムトラストマネージャーファクトリーをサービスとして登録するプロバイダーを示しています。

例: プロバイダー

import org.kohsuke.MetaInfServices;
import javax.net.ssl.TrustManagerFactory;
import java.security.Provider;
import java.util.Collections;
import java.util.List;
import java.util.Map;

@MetaInfServices(Provider.class)
public class CustomProvider extends Provider {

    public CustomProvider() {
        super("CustomProvider", 1.0, "Demo provider");

        System.out.println("CustomProvider initialization.");

        final List<String> emptyList = Collections.emptyList();
        final Map<String, String> emptyMap = Collections.emptyMap();

        putService(new Service(this, TrustManagerFactory.class.getSimpleName(),"CustomAlgorithm", CustomTrustManagerFactorySpi.class.getName(), emptyList, emptyMap));
    }

}

以下の例は、カスタムトラストマネージャーを示しています。このトラストマネージャーには、クライアントまたはサーバーが信頼できるかどうかを確認するためのオーバーロードメソッドが含まれています。

例: TrustManager

import javax.net.ssl.SSLEngine;
import javax.net.ssl.X509ExtendedTrustManager;
import java.net.Socket;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

public class CustomTrustManager extends X509ExtendedTrustManager {

    public void checkClientTrusted(X509Certificate[] x509Certificates, String s, Socket socket) throws CertificateException {
        // Insert your code here
    }

    public void checkServerTrusted(X509Certificate[] x509Certificates, String s, Socket socket) throws CertificateException {
        // Insert your code here
    }

    public void checkClientTrusted(X509Certificate[] x509Certificates, String s, SSLEngine sslEngine) throws CertificateException {
        // Insert your code here
    }

    public void checkServerTrusted(X509Certificate[] x509Certificates, String s, SSLEngine sslEngine) throws CertificateException {
        // Insert your code here
    }

    public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
        // Insert your code here
    }

    public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
        // Insert your code here
    }

    public X509Certificate[] getAcceptedIssuers() {
        // Insert your code here
    }

}

以下の例は、トラストマネージャーのインスタンスを返すために使用されるファクトリーです。

例: TrustManagerFactorySpi

import javax.net.ssl.ManagerFactoryParameters;
import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactorySpi;
import java.security.InvalidAlgorithmParameterException;
import java.security.KeyStore;
import java.security.KeyStoreException;

public class CustomTrustManagerFactorySpi extends TrustManagerFactorySpi {

    protected void engineInit(KeyStore keyStore) throws KeyStoreException {
        // Insert your code here
    }

    protected void engineInit(ManagerFactoryParameters managerFactoryParameters) throws InvalidAlgorithmParameterException {
        // Insert your code here
    }

    protected CustomTrustManager[] engineGetTrustManagers() {
        // Insert your code here
    }

}

カスタムトラストマネージャーの追加

プロバイダーおよびトラストマネージャーを作成したら、カスタムコンポーネントの Elytron への追加 の手順を使用して elytron サブシステムに追加します。

1.11.11. デフォルトの SSLContext

デプロイメント内で使用されるライブラリーの多くは、確立する接続に SSL 設定が必要になる場合があります。これらのライブラリーは呼び出し元によって設定可能な傾向があります。設定が指定されていない場合、それらはデフォルトの SSLContext をプロセスに使用します。

デフォルトの SSLContext は以下のメソッド呼び出しを使用して利用できます。

javax.net.ssl.SSLContext.getDefault();

デフォルトでは、この SSLContext はシステムプロパティーを使用して設定されます。ただし、elytron サブシステム内では、設定したコンテキストのいずれかを割り当て、デフォルトとして使用するように指定できます。

この機能を使用するには、通常通りに SSLContext を設定します。以下のコマンドを使用することで、デフォルトとして使用する SSLContext を指定できます。

/subsystem=elytron:write-attribute(name=default-ssl-context, value=client-context)

既存のサービスおよびデプロイメントは、これを設定する前にデフォルトの SSLContext をキャッシュする可能性があります。そのため、デプロイメントをアクティベートする前にデフォルトが設定されるようリロードが必要となります。

:reload

default-ssl-context 属性が続いて undefined である場合、標準 API はデフォルトを元に戻すメカニズムを提供しません。この場合、Java プロセスを再起動する必要があります。

/subsystem=elytron:undefine-attribute(name=default-ssl-context)
{
    "outcome" => "success",
    "response-headers" => {
        "operation-requires-restart" => true,
        "process-state" => "restart-required"
    }
}

1.11.12. 証明書失効リストの使用

証明書失効リスト (CRL) に対して証明書を検証する場合は、elytron サブシステムのトラストマネージャーに certificate-revocation-list 属性を使用してこれを設定できます。以下に例を示します。

/subsystem=elytron/trust-manager=TRUST_MANAGER:write-attribute(name=certificate-revocation-list,value={path=/path/to/CRL_FILE.crl.pem}

トラストマネージャーで使用できる属性の詳細は、trust-manager 属性表 を参照してください。

注記

証明書失効リストと証明書の両方の有効性を確認するには、トラストストアに証明書チェーンが含まれている必要があります。トラストストアには、認証局および中間証明書のみを含むエンドエンティティー証明書を含めることができません。

reload-certificate-revocation-list 操作を使用すると、トラストマネージャーに証明書失効リストを再読み込みするよう指示できます。

/subsystem=elytron/trust-manager=TRUST_MANAGER:reload-certificate-revocation-list

1.11.13. 認証局を使用した署名証明書の管理

JBoss EAP 管理 CLI と管理コンソールを使用すると、署名済み証明書を取得および管理できます。これにより、CLI またはコンソールから直接署名済み証明書を作成し、必要なキーストアにインポートできます。

注記

このセクションのコマンドの多くには、認証局のステージング URL を使用するかどうかを示すオプションの staging パラメーターがあります。デフォルト値は false で、テストを支援するように設計されています。このパラメーターは、実稼働環境では有効にしないでください。

Let's Encrypt アカウントの設定

JBoss EAP 7.4 より、Let's Encrypt が唯一対応している認証局となりました。署名付き証明書を管理するには、認証局でアカウントを作成し、以下の情報を指定する必要があります。

  • 認証局アカウントキーのエイリアスを含むキーストア。
  • 認証局のエイリアス。指定されたエイリアスが指定のキーストアに存在しない場合は、エイリアスが作成され、プライベートキーエントリーとして保存されます。
  • 問題が起きた場合に認証局が連絡できる、メールアドレスなどの URL オプションのリストです。
/subsystem=elytron/certificate-authority-account=CERTIFICATE_ACCOUNT:add(key-store=KEYSTORE,alias=ALIAS,contact-urls=[mailto:EMAIL_ADDRESS])
認証局でアカウントを作成します。

アカウントが設定されたら、サービスの条件に同意して認証局で作成できます。

/subsystem=elytron/certificate-authority-account=CERTIFICATE_ACCOUNT:create-account(agree-to-terms-of-service=true)
認証局でアカウントを作成します。

認証局アカウントオプションは、update-account コマンドを使用して更新できます。

/subsystem=elytron/certificate-authority-account=CERTIFICATE_ACCOUNT:update-account(agree-to-terms-of-service=true)
認証局に関連付けられたアカウントキーの変更

認証局アカウントに関連付けられたキーは、change-account-key コマンドを使用して変更できます。

/subsystem=elytron/certificate-authority-account=CERTIFICATE_ACCOUNT:change-account-key()
認証局を使用したアカウントの非アクティブ化

このアカウントが不要になった場合は、deactivate-account コマンドを使用して非アクティブ化できます。

/subsystem=elytron/certificate-authority-account=CERTIFICATE_ACCOUNT:deactivate-account()
認証局に関連付けられたメタデータを取得します。

アカウントのメタデータは、get-metadata コマンドでクエリーできます。これにより、以下の情報が表示されます。

  • サービス用語への URL。
  • 認証局の Web サイトへの URL。
  • 認証局アカウントのリスト。
  • 外部アカウントが必要であるかどうか。
/subsystem=elytron/certificate-authority-account=CERTIFICATE_ACCOUNT:get-metadata()
管理コンソールを使用した Let's Encrypt アカウントの設定

管理コンソールを使用して Let's Encrypt アカウントを設定するには、以下の手順に従います。

  1. 管理コンソールにアクセスします。

    詳細は、JBoss EAP設定ガイド 管理コンソール を参照してください。

  2. Runtime Host Security (Elytron) SSL の順に選択し、View をクリックします。
  3. Certificate Auth… をクリックして、Certificate Authority Account ページを開きます。
  4. ラベルの付いたボタンをクリックすると、選択したエイリアスに対して以下の設定を実行できます。

    • Create

      認証局でアカウントを作成します。

    • Deactivate

      選択した認証局アカウントを無効化します。

    • Update

      選択したアカウントを認証局で更新します。

    • Get Metadata

      認証局アカウントについての以下の情報を表示します。

      • 関連するエイリアス
      • 認証局の名前
      • 連絡先の詳細
      • キーストア名
      • 認証局の詳細
    • Change Account Key

      • 認証局で関連する鍵を変更します。

1.11.14. キーストアの操作

管理 CLI および管理コンソールを使用すると、Elytron key-store リソースでさまざまなキーストア操作を実行できます。

管理 CLI を使用したキーストア操作

管理 CLI を使用すると、以下のキーストア操作を実行できます。

  • キーペアを生成します。

    generate-key-pair コマンドは、キーペアを生成し、生成された公開鍵を自己署名の X.509 証明書にラップします。生成された秘密鍵と自己署名証明書がキーストアに追加されます。

    /subsystem=elytron/key-store=httpsKS:add(path=/path/to/server.keystore.jks,credential-reference={clear-text=secret},type=JKS)
    
    /subsystem=elytron/key-store=httpsKS:generate-key-pair(alias=example,algorithm=RSA,key-size=1024,validity=365,credential-reference={clear-text=secret},distinguished-name="CN=www.example.com")
  • 証明書の署名要求を生成します。

    generate-certificate-signing-request コマンドは、キーストアから PrivateKeyEntry を使用して PKCS #10 証明書署名要求を生成します。生成される証明書署名要求はファイルに書き込まれます。

    /subsystem=elytron/key-store=httpsKS:generate-certificate-signing-request(alias=example,path=server.csr,relative-to=jboss.server.config.dir,distinguished-name="CN=www.example.com",extensions=[{critical=false,name=KeyUsage,value=digitalSignature}],credential-reference={clear-text=secret})
  • 証明書または証明書チェーンをインポートします。

    Import-certificate コマンドは、ファイルからキーストアのエントリーに、証明書チェーンまたは証明書チェーンをインポートします。

    /subsystem=elytron/key-store=httpsKS:import-certificate(alias=example,path=/path/to/certificate_or_chain/file,relative-to=jboss.server.config.dir,credential-reference={clear-text=secret},trust-cacerts=true)
  • 証明書をエクスポートします。

    export-certificate コマンドは、キーストアのエントリーからファイルに証明書をエクスポートします。

    /subsystem=elytron/key-store=httpsKS:export-certificate(alias=example,path=serverCert.cer,relative-to=jboss.server.config.dir,pem=true)
  • エイリアスを変更します。

    change-alias コマンドは、既存のキーストアエントリーを新しいエイリアスに移動します。

    /subsystem=elytron/key-store=httpsKS:change-alias(alias=example,new-alias=newExample,credential-reference={clear-text=secret})
  • キーストアに加えられた変更を保存します。

    store コマンドは、キーストアをサポートするファイルに加えられた変更をすべて保持します。

    /subsystem=elytron/key-store=httpsKS:store()
管理コンソールを使用したキーストア操作

管理コンソールを使用して操作を実行するには、以下を実行します。

  1. 管理コンソールにアクセスします。

    詳細は、JBoss EAP設定ガイド 管理コンソール を参照してください。

  2. Runtime Security (Elytron) Stores の順に選択し、View をクリックします。
  3. Key Store をクリックし、キーストア定義ページを開きます。
  4. 必要なキーストア名をクリックします。

    ラベルの付いたボタンをクリックすると、選択したキーストアに対して以下の操作を実行できます。

    • Load

      キーストアをロードまたは再読み込みします。

    • Store

      キーストアをサポートするファイルに加えられた変更が永続化されます。

    • Generate Key Pair

      キーペアを生成し、公開鍵を自己署名の X.509 証明書でラップし、秘密鍵と証明書をキーストアに追加します。

    • Import Certificate

      ファイルからキーストアに証明書チェーンをインポートします。

    • Obtain

      認証局から署名済み証明書を取得し、キーストアに保存します。

1.11.14.1. キーストア認証局の操作

Let's Encrypt アカウントの設定 を行うことで、キーストアで以下の操作を行うことができます。

注記

このセクションのコマンドの多くには、認証局のステージング URL を使用するかどうかを示すオプションの staging パラメーターがあります。デフォルト値は false で、テストを支援するように設計されています。このパラメーターは、実稼働環境では有効にしないでください。

管理 CLI を使用したキーストア認証局の操作

管理 CLI を使用することで、以下のキーストアの認証局操作を実行できます。

  • 署名済み証明書を取得します。

    キーストアに認証局アカウントを定義したら、obtain-certificate コマンドを使用して署名済み証明書を取得し、キーストアに保存できます。認証局のアカウントが存在しない場合は、自動的に作成されます。

    /subsystem=elytron/key-store=KEYSTORE:obtain-certificate(alias=ALIAS,domain-names=[DOMAIN_NAME],certificate-authority-account=CERTIFICATE_ACCOUNT,agree-to-terms-of-service=true,algorithm=RSA,credential-reference={clear-text=secret})
  • 署名付きの証明書を取り消します。

    revoke-certificate コマンドは、認証局が発行した証明書を取り消します。

    /subsystem=elytron/key-store=KEYSTORE:revoke-certificate(alias=ALIAS,certificate-authority-account=CERTIFICATE_ACCOUNT)
  • 署名付き証明書が更新時かどうかを確認します。

    should-renew-certificate コマンドは、証明書が更新時かどうかを確認します。このコマンドは、証明書の期限切れ日数が指定日数を下回る場合に true を返し、それ以外の場合は false を返します。

    以下のコマンドは、次の 7 日間で証明書の有効期限が切れるかどうかを判断します。

    /subsystem=elytron/key-store=KEYSTORE:should-renew-certificate(alias=ALIAS,expiration=7)
管理コンソールを使用したキーストア認証局の操作

管理コンソールを使用して操作を実行するには、以下を実行します。

  1. 管理コンソールにアクセスします。

    詳細は、JBoss EAP設定ガイド 管理コンソール を参照してください。

  2. Runtime Security (Elytron) Stores の順に選択し、View をクリックします。
  3. Key Store をクリックし、キーストア定義ページを開きます。
  4. 必要なキーストア名の隣の Aliases をクリックします。
  5. 必要なエイリアス名をクリックします。

    ラベルの付いたボタンをクリックすると、選択したエイリアスに対して以下の操作を実行できます。

    • Change Alias

      エントリーのエイリアスを変更します。

    • Export Certificate

      キーストアのエントリーからファイルに証明書をエクスポートします。

    • Generate CSR

      証明書の署名要求を生成します。

    • Remove Alias

      選択したエイリアスをキーストアから削除します。

    • Details

      エイリアスに関連付けられた証明書の詳細を表示します。

    • Revoke

      エイリアスに関連付けられた証明書を取り消します。

    • Verify Renew

      関連付けられた証明書の更新時かどうかを判断します。

1.11.15. サブジェクトの別名拡張を使用した X.509 証明書の Evidence Decoder の設定

デフォルトでは、Elytron の X.509 証明書に関連するプリンシパルは証明書のサブジェクト名です。また、X.509 証明書チェーンに関連付けられたプリンシパルは証明書チェーンの最初の証明書のサブジェクト名になります。X.509 証明書のサブジェクトの別名エクステンションをプリンシパルとして使用するように X509-subject-alt-name-evidence-decoder を設定できます。

X.509 証明書および X.509 証明書チェーンのサブジェクトの別名拡張仕様は、RFC 5280 で定義されています。

前提条件

  • クライアント証明書の想定形式が分かっているか、ローカルで利用可能なクライアント証明書がある。

手順

  1. 使用するサブジェクトの別名エクステンションを特定します。

    クライアント証明書がローカルにある場合は、keytool コマンドを使用してサブジェクトの別名の拡張子を表示できます。

    keytool -printcert -file /path/to/certificate/certificate.cert

    サブジェクトの別名の拡張子は、以下のようにリスト表示されています。

    SubjectAlternativeName [
       DNS:one.example.org
       IP Address:127.0.0.1
    ]
  2. 識別されたサブジェクトの代替名を使用するために、x509-subject-alt-name-evidence-decoder を作成します。

    /subsystem=elytron/x509-subject-alt-name-evidence-decoder=exampleDnsDecoder:add(alt-name-type=__EXTENSION_TO_USE__)
    • エビデンスデコーダーを使用するには、security-domain で参照します。

      /subsystem=elytron/security-domain=__Security_Domain_Name__:write-attribute(name="evidence-decoder",value="exampleDnsDecoder")

1.11.16. 集約エビデンスデコーダーの設定

2 つ以上のエビデンスデコーダーを組み合わせるように集約エビデンスデコーダーを設定できます。エビデンスデコーダーが null 以外のプリンシパルを返すまで、もしくは試行するエビデンスデコーダーがなくなるまで、設定された順序でエビデンスデコーダーが適用されます。

前提条件

手順

  1. 既存のエビデンスデコーダーから集約エビデンスデコーダーを作成します。

    /subsystem=elytron/aggregate-evidence-decoder=aggregateDecoder:add(evidence-decoders=[__DECODER_1__,__DECODER_2__,...,__DECODER_N__])
    • エビデンスデコーダーを使用するには、セキュリティードメインで参照します。

      /subsystem=elytron/security-domain=__SECURITY_DOMAIN__:write-attribute(name="evidence-decoder",value="aggregateDecoder")

1.11.17. X.500 サブジェクトエビデンスデコーダーの設定

x500-subject-evidence-decoder を設定して、証明書チェーンの最初の証明書からサブジェクトを抽出します。

手順

  • x.500 サブジェクトエビデンスデコーダーを作成します。

    /subsystem=elytron/x500-subject-evidence-decoder=exampleSubjectDecoder:add()

1.11.18. カスタムエビデンスデコーダー実装の使用

Elytron でカスタム org.wildfly.security.auth.server.EvidenceDecoder 実装を使用するには、JBoss EAP にモジュールとして追加します。

手順

  1. カスタム実装クラスを Java Archive (JAR) としてパッケージ化します。
  2. JAR を含む JBoss EAP にモジュールを追加します。

    JBoss EAP にモジュールを追加する方法は、設定ガイドカスタムモジュールの作成 を参照してください。

  3. カスタムエビデンスデコーダーを Elytron に追加します。

    /subsystem=elytron/custom-evidence-decoder=myCustomEvidenceDecoder:add(module=__MODULE_NAME__, class-name=__FULLY_QUALIFIED_CLASS_NAME__)
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.