1.10. Remoting サブシステムとの Elytron の等号
1.10.1. Elytron とリモーティングコネクターの統合
リモーティングコネクターは SASL 認証ファクトリー、ソケットバインディング、およびオプションの SSL コンテキストによって指定されます。特にコネクターの属性は以下のようになります。
sasl-authentication-factory
- このコネクターに対する要求の認証に使用する SASL 認証ファクトリーへの参照。このファクトリーの作成に関する詳細は、Elytron 認証ファクトリーの作成を参照してください 。
socket-binding
- コネクターが受信リクエストをリッスンするインターフェイスおよびポートを詳細化しているソケットバインディングへの参照。
ssl-context
- このコネクターに使用するサーバー側の SSL コンテキストのオプションの参照。SSL コンテキストには、使用されるサーバーキーマネージャーとトラストマネージャーが含まれます。また、SSL コンテキストは、SSL が必要なインスタンスで定義する必要があります。
たとえば、以下のようにコネクターを追加できます。ここでは、SASL_FACTORY_NAME
はすでに定義された認証ファクトリーで、SOCKET_BINDING_NAME
は既存のソケットバインディングです。
/subsystem=remoting/connector=CONNECTOR_NAME:add(sasl-authentication-factory=SASL_FACTORY_NAME,socket-binding=SOCKET_BINDING_NAME)
SSL が必要な場合は、以下のように ssl-context
属性を使用して、事前設定された server-ssl-context
が参照されることがあります。
/subsystem=remoting/connector=CONNECTOR_NAME:add(sasl-authentication-factory=SASL_FACTORY_NAME,socket-binding=SOCKET_BINDING_NAME,ssl-context=SSL_CONTEXT_NAME)
1.10.1.1. Elytron サブシステムを使用したリモーティングコネクターでの一方向 SSL/TLS の有効化
以下の SASL メカニズムは、SSL/TLS などの外部のセキュアなチャネルへのチャネルバインディングに対応しています。
- GS2-KRB5-PLUS
- SCRAM-SHA-1-PLUS
- SCRAM-SHA-256-PLUS
- SCRAM-SHA-384-PLUS
- SCRAM-SHA-512-PLUS
これらのメカニズムを使用するには、カスタム SASL ファクトリー を設定するか、定義済みの SASL 認証ファクトリーのいずれかを変更する必要があります。SASL メカニズムセレクター は、クライアントで使用することで、適切な SASL メカニズムを指定できます。
前提条件
-
キーストア
が設定されている。 -
キーマネージャー
が設定されている。 -
定義された
キーマネージャー
を参照するserver-ssl-context
が設定されている。
手順
コネクターの
socket-binding
を作成します。以下のコマンドは、ポート11199
でリッスンするoneWayBinding
バインディングを定義します。/socket-binding-group=standard-sockets/socket-binding=oneWayBinding:add(port=11199)
SASL 認証ファクトリー、以前に作成したソケットバインディング、および SSL コンテキストを参照するコネクターを作成します。
/subsystem=remoting/connector=oneWayConnector:add(sasl-authentication-factory=SASL_FACTORY,socket-binding=oneWayBinding,ssl-context=SSL_CONTEXT)
重要security-realm
とssl-context
の 両方 が定義されている場合、JBoss EAP はssl-context
によって提供される SSL / TLS 設定を使用します。-
サーバー証明書を信頼するようにクライアントを設定します。汎用クライアントの例は、Elytron Client Side One Way Example を参照してください。この例では、クライアントの
trust-store
を使用してssl-context
を設定します。
1.10.1.2. Elytron サブシステムを使用したリモーティングコネクターの双方向 SSL/TLS の有効化
以下の SASL メカニズムは、SSL/TLS などの外部のセキュアなチャネルへのチャネルバインディングに対応しています。
- GS2-KRB5-PLUS
- SCRAM-SHA-1-PLUS
- SCRAM-SHA-256-PLUS
- SCRAM-SHA-384-PLUS
- SCRAM-SHA-512-PLUS
これらのメカニズムを使用するには、カスタム SASL ファクトリー を設定するか、定義済みの SASL 認証ファクトリーのいずれかを変更して、これらのメカニズムを提供できます。SASL メカニズムセレクターは、クライアントで使用することで、適切な SASL メカニズムを指定できます。
前提条件
-
クライアント証明書とサーバー証明書向けにそれぞれ別の
キーストアコンポーネント
が設定されている。 -
サーバーの
key-store
のkey-manager
を設定している。 -
サーバーの
trust-store
のtrust-manager
が設定されている。 -
定義された
key-manager
とtrust-manager
を参照するserver-ssl-context
が設定されている。
手順
コネクターの
socket-binding
を作成します。以下のコマンドは、ポート11199
でリッスンするtwoWayBinding
バインディングを定義します。/socket-binding-group=standard-sockets/socket-binding=twoWayBinding:add(port=11199)
SASL 認証ファクトリー、以前に作成したソケットバインディング、および SSL コンテキストを参照するコネクターを作成します。
/subsystem=remoting/connector=twoWayConnector:add(sasl-authentication-factory=SASL_FACTORY,socket-binding=twoWayBinding,ssl-context=SSL_CONTEXT)
重要security-realm
とssl-context
の 両方 が定義されている場合、JBoss EAP はssl-context
によって提供される SSL / TLS 設定を使用します。サーバー証明書を信頼するようクライアントを設定し、その証明書をサーバーへ提示します。
双方向 SSL / TLS 認証を完了するには、信頼されたクライアント証明書をサーバーに提示するようにクライアントを設定する必要があります。たとえば、ブラウザーを使用している場合は、信頼される証明書をブラウザーのトラストストアにインポートする必要があります。汎用クライアントの例は、Elytron Client Side Two Way Example を参照してください。この例では、クライアントの
trust-store
とkey-store
を使用してssl-context
を設定します。
双方向 SSL/TLS がリモーティングコネクターで有効化されるようになりました。
1.10.2. リモーティング HTTP コネクターとの Elytron の統合
リモート HTTP 接続は、undertow
サブシステムのコネクターと、elytron
サブシステムで定義された SASL 認証ファクトリーを参照して指定されます。HTTP コネクターは HTTP アップグレードベースのリモーティングコネクターの設定を利用できるようにします。また、connector-ref
属性によって指定された HTTP リスナーに接続します。
http-connector
の属性は次のとおりです。
connector-ref
-
事前定義された
undertow
リスナーへの参照。 sasl-authentication-factory
- このコネクターに対する要求の認証に使用する SASL 認証ファクトリーへの参照。このファクトリーの作成に関する詳細は、Elytron 認証ファクトリーの作成を参照してください 。
たとえば、http-connector
は以下のように追加できます。ここでは、CONNECTOR_NAME
は undertow
リスナーを参照します。また、SASL_FACTORY_NAME
は elytron
サブシステムにすでに定義された認証ファクトリーです。
/subsystem=remoting/http-connector=HTTP_CONNECTOR_NAME:add(connector-ref=CONNECTOR_NAME,sasl-authentication-factory=SASL_FACTORY_NAME)
1.10.2.1. リモーティング HTTP コネクターでの一方向 SSL の有効化
以下の SASL メカニズムは、SSL/TLS などの外部のセキュアなチャネルへのチャネルバインディングに対応しています。
- GS2-KRB5-PLUS
- SCRAM-SHA-1-PLUS
- SCRAM-SHA-256-PLUS
- SCRAM-SHA-384-PLUS
- SCRAM-SHA-512-PLUS
上記のメカニズムのいずれかを使用するには、カスタム SASL ファクトリーを設定してください。または、事前定義された SASL 認証ファクトリーのいずれかを編集することで、これらのメカニズムを提供できます。SASL メカニズムセレクター は、クライアントで使用することで、適切な SASL メカニズムを指定できます。
前提条件
-
key-store
が設定されている。 -
key-manager
が設定されている。 -
server-ssl-context
が定義済みのkey-manager
を参照するように設定されている。
手順
https-listener
が SSL 設定でレガシーセキュリティーレルムを使用するように設定されているかどうかを確認します。/subsystem=undertow/server=default-server/https-listener=https:read-attribute(name=security-realm) { "outcome" => "success", "result" => "ApplicationRealm" }
上記のコマンドは、
https-listener
が SSL 設定のApplicationRealm
レガシーセキュリティーレルムを使用するように設定されていることを示しています。undertow は、レガシーセキュリティーレルムと Elytron のssl-context
を同時に参照できないため、レガシーセキュリティーレルムへの参照を削除する必要があります。注記結果が
undefined
である場合は、次の手順でセキュリティーレルムへの参照を削除する必要はありません。レガシーセキュリティーレルムへの参照を削除し、
https-listener
を Elytron の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=SERVER_SSL_CONTEXT) run-batch
HTTPS リスナーおよび SASL 認証ファクトリーを参照する HTTP コネクターを作成します。
/subsystem=remoting/http-connector=ssl-http-connector:add(connector-ref=https,sasl-authentication-factory=SASL_FACTORY)
サーバーをリロードします。
reload
- サーバー証明書を信頼するようにクライアントを設定します。たとえば、ブラウザーを使用している場合は、信頼される証明書をブラウザーのトラストストアにインポートする必要があります。
1.10.2.2. リモーティング HTTP コネクターでの双方向 SSL/TLS の有効化
以下の SASL メカニズムは、SSL/TLS などの外部のセキュアなチャネルへのチャネルバインディングに対応しています。
- GS2-KRB5-PLUS
- SCRAM-SHA-1-PLUS
- SCRAM-SHA-256-PLUS
- SCRAM-SHA-384-PLUS
- SCRAM-SHA-512-PLUS
上記のメカニズムのいずれかを使用するには、カスタム SASL ファクトリーを設定してください。または、事前定義された SASL 認証ファクトリーのいずれかを編集することで、これらのメカニズムを提供できます。SASL メカニズムセレクター は、クライアントで使用することで、適切な SASL メカニズムを指定できます。
前提条件
-
クライアント証明書とサーバー証明書向けにそれぞれ別の
キーストアコンポーネント
が設定されている。 -
サーバーの
key-store
のkey-manager
を設定している。 -
サーバーの
trust-store
のtrust-manager
が設定されている。 -
定義された
key-manager
とtrust-manager
を参照するserver-ssl-context
が設定されている。
手順
https-listener
が SSL 設定でレガシーセキュリティーレルムを使用するように設定されているかどうかを確認します。/subsystem=undertow/server=default-server/https-listener=https:read-attribute(name=security-realm) { "outcome" => "success", "result" => "ApplicationRealm" }
上記のコマンドは、
https-listener
が SSL 設定のApplicationRealm
レガシーセキュリティーレルムを使用するように設定されていることを示しています。undertow は、レガシーセキュリティーレルムと Elytron のssl-context
を同時に参照できないため、レガシーセキュリティーレルムへの参照を削除する必要があります。注記結果が
undefined
である場合は、次の手順でセキュリティーレルムへの参照を削除する必要はありません。レガシーセキュリティーレルムへの参照を削除し、
https-listener
を Elytron の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=SERVER_SSL_CONTEXT) run-batch
HTTPS リスナーおよび SASL 認証ファクトリーを参照する HTTP コネクターを作成します。
/subsystem=remoting/http-connector=ssl-http-connector:add(connector-ref=https,sasl-authentication-factory=SASL_FACTORY)
サーバーをリロードします。
reload
サーバー証明書を信頼するようクライアントを設定し、その証明書をサーバーへ提示します。
信頼できるクライアント証明書をサーバーへ提示するようにクライアントを設定して、双方向 SSL/TLS 認証を完了します。たとえば、ブラウザーを使用している場合は、信頼される証明書をブラウザーのトラストストアにインポートする必要があります。
双方向 SSL/TLS がリモーティング HTTP コネクターで有効化されるようになりました。
security-realm
と ssl-context
の 両方 が定義されている場合、JBoss EAP は ssl-context
によって提供される SSL / TLS 設定を使用します。
1.10.3. リモーティングアウトバウンドコネクターとの Elytron の統合
リモートアウトバウンド接続は、アウトバウンドソケットバインディングと認証コンテキストによって指定されます。認証コンテキストは、接続に必要なすべてのセキュリティー情報を提供します。特に remote-outbound-connection
の属性は以下のようになります。
-
outbound-socket-binding-ref
- 接続の宛先アドレスとポートの判断に使用されるアウトバウンドソケットバインディングの名前。 -
authentication-context
- 認証設定および定義した SSL コンテキストが含まれる認証コンテキストの参照。これが存在する場合は、接続に必要となります。認証コンテキストの定義の情報は、認証コンテキストの作成 を参照してください。
たとえば、remote-outbound-connection
は以下のように追加できます。OUTBOUND_SOCKET_BINDING_NAME はすでに定義されている outbound-socket-binding
で、AUTHENTICATION_CONTEXT_NAME は、elytron
サブシステム設定ですでに定義されている authentication-context
です。
/subsystem=remoting/remote-outbound-connection=OUTBOUND_CONNECTION_NAME:add(authentication-context=AUTHENTICATION_CONTEXT_NAME, outbound-socket-binding-ref=OUTBOUND_SOCKET_BINDING_NAME)