第5章 ブローカーのセキュリティー保護
5.1. 接続のセキュリティー保護
ブローカーがメッセージングクライアントに接続されている場合や、ブローカーが他のブローカーに接続されている場合は、Transport Layer Security(TLS) を使用してこれらの接続をセキュア化できます。
使用できる TLS 設定は 2 つあります。
- 一方向 TLS。証明書を表示するブローカーのみが表示されます。これが最も一般的な設定です。
- ブローカーとクライアント (または他のブローカー) の両方が証明書を提示する双方向 (または 相互)TLS。
本セクションの手順では、一方向と双方向 TLS の両方を設定する方法を説明します。
5.1.1. 一方向 TLS の設定
以下の手順は、一方向 TLS に特定のアクセプターを設定する方法を示しています。
-
<broker_instance_dir>/etc/broker.xml
設定ファイルを開きます。 特定のアクセプターでは、
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 の設定」 を参照してください。
手順
-
<broker_instance_dir>/etc/broker.xml
設定ファイルを開きます。 一方向 TLS 用に以前に設定したアクセプターの場合は、
needClientAuth
キーを追加します。この値はtrue
に設定します。以下に例を示します。<acceptor name="artemis">tcp://0.0.0.0:61616?sslEnabled=true;keyStorePath=../etc/broker.keystore;keyStorePassword=1234!;needClientAuth=true</acceptor>
前述の手順の設定は、クライアントの証明書が信頼できるプロバイダーによって署名されていることを前提としています。クライアントの証明書が信頼されるプロバイダー (自己署名の場合など) で署名されて いない 場合には、ブローカーはクライアントの証明書をトラストストアにインポートする必要があります。この場合は、
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 パラメーターを指定する方法が異なります。ただし、コアプロトコル (ブリッジ) を使用するクライアントの場合、TLS パラメーターはブローカーのアクセプターと同様にコネクター URL に設定されます。
5.1.3. TLS 設定オプション
以下の表は、利用可能なすべての TLS 設定オプションを示しています。
オプション | 備考 |
---|---|
|
接続に対して SSL を有効にするかどうかを指定します。TLS を有効にするには |
| アクセプターで使用される場合: ブローカー証明書を保持するブローカーの TLS キーストアへのパス (自己署名または認証局による署名のいずれか)。
コネクターで使用される場合: クライアント証明書を保持するクライアントの TLS キーストアへのパス。これは、双方向の TLS を使用している場合にのみ、コネクターに関係します。この値はブローカーに設定できますが、ダウンロードされ、クライアントによって使用されます。クライアントがブローカーに設定されたものとは異なるパスを使用する必要がある場合は、標準の |
| アクセプターで使用される場合: ブローカーのキーストアのパスワード。
コネクターで使用される場合: クライアントのキーストアのパスワード。これは、双方向の TLS を使用している場合にのみ、コネクターに関係します。この値はブローカーに設定できますが、ダウンロードされ、クライアントによって使用されます。クライアントがブローカーに設定されたものとは異なるパスワードを使用する必要がある場合は、標準の |
| アクセプターで使用される場合: ブローカーが信頼するすべてのクライアントのキーを保持するブローカーの TLS トラストストアへのパス。これは、双方向の TLS を使用している場合にのみ、アクセプターに関係します。
コネクターで使用される場合: クライアントが信頼するすべてのブローカーの公開鍵を保持するクライアントの TLS トラストストアへのパス。この値はブローカーに設定できますが、ダウンロードされ、クライアントによって使用されます。クライアントでサーバーの設定と異なるパスを使用する必要がある場合は、標準の |
| アクセプターで使用される場合: ブローカーのトラストストアのパスワード。これは、双方向の TLS を使用している場合にのみ、アクセプターに関係します。
コネクターで使用される場合: クライアントのトラストストアのパスワード。この値はブローカーに設定できますが、ダウンロードされ、クライアントによって使用されます。クライアントがブローカーに設定されたものとは異なるパスワードを使用する必要がある場合は、標準の |
|
アクセプターまたはコネクターで使用されるかに関係なく、TLS 通信に使用される暗号スイートのコンマ区切りリストになります。デフォルト値は |
|
アクセプターまたはコネクターで使用されるかに関係なく、TLS 通信に使用されるプロトコルのコンマ区切りリストになります。デフォルト値は |
|
このプロパティーはアクセプター専用です。これは、双方向 TLS が必要であるアクセプターに接続するクライアントに指示します。有効な値は |