第4章 Camel ActiveMQ コンポーネントのセキュリティー保護
概要
Camel ActiveMQ コンポーネントを使用すると、Apache ActiveMQ ブローカーに接続できるルートに JMS エンドポイントを定義できます。Camel ActiveMQ エンドポイントをセキュリティー保護するには、セキュアな 接続ファクトリーを使用する Camel ActiveMQ コンポーネントのインスタンスを作成する必要があります。
4.1. セキュアな ActiveMQ 接続ファクトリー
概要
Apache Camel は、ルート内の Apache ActiveMQ エンドポイントを定義するための Apache ActiveMQ コンポーネントを提供します。Apache ActiveMQ エンドポイントは事実上ブローカーの Java クライアントであり、コンシューマーエンドポイント (通常は JMS メッセージを ポーリング するルートの開始時に使用) またはプロデューサーエンドポイント (通常は JMS メッセージをブローカーに 送信 するためのルートの最後または途中で使用) を定義できます。
リモートブローカーがセキュアな場合 (SSL セキュリティー、JAAS セキュリティー、またはその両方)、Apache ActiveMQ コンポーネントを必要なクライアントセキュリティーを設定する必要があります。
セキュリティープロパティーのプログラミング
Apache ActiveMQ では、ActiveMQSslConnectionFactory
JMS 接続ファクトリーのインスタンスを作成および設定することで、SSL セキュリティー設定 (および JAAS セキュリティー設定) をプログラムできます。JMS 接続ファクトリーのプログラミングは、OSGi、J2EE、Tomcat などのコンテナーのコンテキストで使用する正しいアプローチです。なぜなら、これらの設定は JMS 接続ファクトリーインスタンスを使用するアプリケーションに対してローカルだからです。
スタンドアロンブローカーは、Java システムプロパティー を使用して SSL を設定できます。ただし、コンテナーにデプロイされたクライアントの場合、この設定は OSGi コンテナー全体ではなく、個々のバンドルにのみ適用する必要があるため、これは実用的なアプローチでは ありません。Camel ActiveMQ エンドポイントは事実上 Apache ActiveMQ Java クライアントの一種であるため、この制限は Camel ActiveMQ エンドポイントにも適用されます。
セキュアな接続ファクトリーの定義
例4.1「セキュアな接続ファクトリー Bean の定義」 では、ブループリントでセキュアな接続ファクトリー Bean を作成し、SSL/TLS セキュリティー および JAAS 認証の両方を有効にする方法を示しています。
例4.1 セキュアな接続ファクトリー Bean の定義
<bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQSslConnectionFactory"> <property name="brokerURL" value="ssl://localhost:61617" /> <property name="userName" value="Username"/> <property name="password" value="Password"/> <property name="trustStore" value="/conf/client.ts"/> <property name="trustStorePassword" value="password"/> </bean>
ActiveMQSslConnectionFactory
クラスには、次のプロパティーが指定されています。
brokerURL
- 接続するリモートブローカーの URL。この例では、ローカルホスト上の SSL 対応 OpenWire ポートに接続します。ブローカーは、互換性のあるポート設定で対応するトランスポートコネクターも定義する必要があります。
userName
およびpassword
-
有効な JAAS ログインクレデンシャル、
Username
およびPassword
。 trustStore
-
SSL 接続用の証明書トラストストアを含む Java キーストアファイルの場所。場所はクラスパスリソースとして指定されます。相対パスを指定すると、リソースの場所はクラスパスの
org/jbossfuse/example
ディレクトリーからの相対パスになります。 trustStorePassword
- トラストストアを含むキーストアファイルのロックを解除するパスワード。
keyStore
および keyStorePassword
プロパティーを指定することもできますが、これらのプロパティーは、SSL 相互認証が有効になっている場合にのみ必要になります (クライアントが SSL ハンドシェイク中に X.509 証明書をブローカーに提示)。