第5章 ブローカーのセキュリティー保護


5.1. 接続のセキュリティー保護

ブローカーがメッセージングクライアントに接続されている場合や、ブローカーが他のブローカーに接続されている場合は、Transport Layer Security(TLS) を使用してこれらの接続をセキュア化できます。

使用できる TLS 設定は 2 つあります。

  • 一方向 TLS。証明書を表示するブローカーのみが表示されます。これが最も一般的な設定です。
  • ブローカーとクライアント (または他のブローカー) の両方が証明書を提示する双方向 (または 相互)TLS。

5.1.1. 一方向 TLS の設定

以下の手順は、一方向 TLS に特定のアクセプターを設定する方法を示しています。

  1. <broker_instance_dir>/etc/broker.xml 設定ファイルを開きます。
  2. 特定のアクセプターでは、sslEnabled キーを追加し、値を true に設定します。さらに、keyStorePath キーおよび keyStorePassword キーを追加します。ブローカーキーストアに対応する値を設定します。以下に例を示します。

    <acceptor name="artemis">tcp://0.0.0.0:61616?sslEnabled=true;keyStorePath=../etc/broker.keystore;keyStorePassword=1234!</acceptor>

5.1.2. 双方向 TLS の設定

以下の手順では、双方向 TLS を設定する方法を説明します。

前提条件

  • 一方向 TLS に対して、指定のアクセプターを設定しておく必要があります。詳細は、「一方向 TLS の設定」 を参照してください。

手順

  1. <broker_instance_dir>/etc/broker.xml 設定ファイルを開きます。
  2. 一方向 TLS 用に以前に設定したアクセプターの場合は、needClientAuth キーを追加します。この値は true に設定します。以下に例を示します。

    <acceptor name="artemis">tcp://0.0.0.0:61616?sslEnabled=true;keyStorePath=../etc/broker.keystore;keyStorePassword=1234!;needClientAuth=true</acceptor>
  3. 前述の手順の設定は、クライアントの証明書が信頼できるプロバイダーによって署名されていることを前提としています。クライアントの証明書が信頼されるプロバイダー (自己署名の場合など) で署名されて いない 場合には、ブローカーはクライアントの証明書をトラストストアにインポートする必要があります。この場合は、trustStorePath キーおよび trustStorePassword キーを追加します。ブローカーのトラストストアに対応する値を設定します。以下に例を示します。

    <acceptor name="artemis">tcp://0.0.0.0:61616?sslEnabled=true;keyStorePath=../etc/broker.keystore;keyStorePassword=1234!;needClientAuth=true;trustStorePath=../etc/client.truststore;trustStorePassword=5678!</acceptor>
注記

AMQ Broker は複数のプロトコルをサポートし、各プロトコルとプラットフォームには TLS パラメーターを指定する方法が異なります。ただし、Core プロトコル (ブリッジ) を使用するクライアントの場合、TLS パラメーターは、ブローカーのアクセプターと同様に、コネクターの URL に設定されます。

自己署名証明書が Java 仮想マシン (JVM) トラストストア内に信頼できる証明書としてリストされている場合、JVM は証明書の有効期限を検証しません。実稼働環境では、Red Hat は認証局によって署名された証明書を使用することを推奨します。

5.1.3. TLS 設定オプション

以下の表は、利用可能なすべての TLS 設定オプションを示しています。

表5.1 TLS 設定オプション
オプション備考

sslEnabled

接続に対して SSL を有効にするかどうかを指定します。TLS を有効にするには true に設定する必要があります。デフォルト値は false です。

keyStorePath

アクセプターで使用される場合: ブローカー証明書を保持するブローカーの TLS キーストアへのパス (自己署名または認証局による署名のいずれか)。

コネクターで使用される場合: クライアント証明書を保持するクライアントの TLS キーストアへのパス。これは、双方向の TLS を使用している場合にのみ、コネクターに関係します。この値はブローカーに設定できますが、ダウンロードされ、クライアントによって使用されます。クライアントがブローカーに設定されたものとは異なるパスを使用する必要がある場合は、標準の javax.net.ssl.keyStore システムプロパティーまたは AMQ 固有の org.apache.activemq.ssl.keyStore システムプロパティーのいずれかを使用してブローカー設定を上書きできます。AMQ 固有のシステムプロパティーは、クライアント上の別のコンポーネントがすでに標準の Java システムプロパティーを使用している場合に役立ちます。

keyStorePassword

アクセプターで使用される場合: ブローカーのキーストアのパスワード。

コネクターで使用される場合: クライアントのキーストアのパスワード。これは、双方向の TLS を使用している場合にのみ、コネクターに関係します。この値はブローカーに設定できますが、ダウンロードされ、クライアントによって使用されます。クライアントがブローカーに設定されたものとは異なるパスワードを使用する必要がある場合は、標準の javax.net.ssl.keyStorePassword システムプロパティーまたは AMQ 固有の org.apache.activemq.ssl.keyStorePassword システムプロパティーのいずれかを使用してブローカー設定をオーバーライドできます。AMQ 固有のシステムプロパティーは、クライアント上の別のコンポーネントがすでに標準の Java システムプロパティーを使用している場合に役立ちます。

trustStorePath

アクセプターで使用される場合: ブローカーが信頼するすべてのクライアントのキーを保持するブローカーの TLS トラストストアへのパス。これは、双方向の TLS を使用している場合にのみ、アクセプターに関係します。

コネクターで使用される場合: クライアントが信頼するすべてのブローカーの公開鍵を保持するクライアントの TLS トラストストアへのパス。この値はブローカーに設定できますが、ダウンロードされ、クライアントによって使用されます。クライアントでサーバーの設定と異なるパスを使用する必要がある場合は、標準の javax.net.ssl.trustStore システムプロパティーまたは AMQ 固有の org.apache.activemq.ssl.trustStore システムプロパティーのいずれかを使用してサーバー側の設定をオーバーライドできます。AMQ 固有のシステムプロパティーは、クライアント上の別のコンポーネントがすでに標準の Java システムプロパティーを使用している場合に役立ちます。

trustStorePassword

アクセプターで使用される場合: ブローカーのトラストストアのパスワード。これは、双方向の TLS を使用している場合にのみ、アクセプターに関係します。

コネクターで使用される場合: クライアントのトラストストアのパスワード。この値はブローカーに設定できますが、ダウンロードされ、クライアントによって使用されます。クライアントがブローカーに設定されたものとは異なるパスワードを使用する必要がある場合は、標準の javax.net.ssl.trustStorePassword システムプロパティーまたは AMQ 固有の org.apache.activemq.ssl.trustStorePassword システムプロパティーのいずれかを使用してブローカー設定をオーバーライドできます。AMQ 固有のシステムプロパティーは、クライアント上の別のコンポーネントがすでに標準の Java システムプロパティーを使用している場合に役立ちます。

enabledCipherSuites

アクセプターまたはコネクターの両方の TLS 通信に使用される暗号スイートのコンマ区切りリスト。

クライアントアプリケーションでサポートする最も安全な暗号スイートを指定します。コンマ区切りのリストを使用して、ブローカーとクライアントの両方に共通の暗号スイートのセットを指定する場合、または暗号スイートを指定しない場合には、ブローカーとクライアントは、使用する暗号スイートについて相互に交渉します。どの暗号スイートを指定すればよいかわからない場合は、まずクライアントをデバッグモードで実行してブローカーとクライアント間の接続を確立し、ブローカーとクライアントの両方に共通する暗号スイートを確認します。次に、ブローカーで enabledCipherSuites を設定します。

利用可能な暗号スイートは、ブローカーとクライアントによって使用される TLS プロトコルバージョンによって異なります。ブローカーをアップグレードした後にデフォルトの TLS プロトコルバージョンが変更された場合は、ブローカーとクライアントが共通の暗号スイートを使用できるようにするために、以前の TLS プロトコルバージョンを選択する必要がある場合があります。詳細は、enabledProtocols を参照してください。

enabledProtocols

アクセプターまたはコネクターで使用されるかに関係なく、TLS 通信に使用されるプロトコルのコンマ区切りリストになります。TLS プロトコルのバージョンを指定しない場合、ブローカーは JVM のデフォルトバージョンを使用します。

ブローカーが JVM のデフォルトの TLS プロトコルバージョンを使用しており、ブローカーのアップグレード後にそのバージョンが変更された場合、ブローカーとクライアントが使用する TLS プロトコルバージョンに互換性がない可能性があります。新しい TLS プロトコルバージョンを使用することを推奨しますが、新しい TLS プロトコルバージョンをサポートしていないクライアントと相互運用するために、enabledProtocols で以前のバージョンを指定することもできます。

needClientAuth

このプロパティーはアクセプター専用です。これは、双方向 TLS が必要であるアクセプターに接続するクライアントに指示します。有効な値は true または false です。デフォルト値は false です。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.