クライアントアプリケーションは、適切に設定された接続ファクトリ管理対象オブジェクトを使用して、ブローカへの HTTPS 接続を確立する必要があります。
ただし、クライアントは Java Secure Socket Extension (JSSE) で提供される SSL ライブラリへもアクセスし、ルート証明書を持つ必要もあります。SSL ライブラリは、JDK 1.4 に付属しています。それ以前の JDK バージョンを使用している場合は、「JSSE を設定する」を参照してください。それ以外の場合は 「ルート証明書をインポートする」に進んでください。
これらの点を解決したあとで、HTTPS 接続の設定に進むことができます。
JSSE .jar ファイルを JRE_HOME/lib/ext ディレクトリにコピーします。
jsse.jar、jnet.jar、jcert.jar |
JSSE セキュリティープロバイダを静的に追加します。
security.provider.n=com.sun.net.ssl.internal.ssl.Provider |
これを JRE_HOME/lib/security/java.security ファイルに追加します。n は、セキュリティープロバイダパッケージに対して次に利用可能な優先順位です。
JDK 1.4 を使用していない場合は、-D オプションをクライアントアプリケーションを起動するコマンドに使用して、次の JSSE プロパティーを設定します。
java.protocol.handler.pkgs=com.sun.net.ssl.internal.www.protocol |
Web サーバーの証明書に署名した認証局 (CA) のルート証明書が、デフォルトで信頼されるデータベースにない場合、または Web サーバーまたはアプリケーションサーバーの専用の証明書を使用している場合、信頼されるデータベースに証明書を追加する必要があります。これに該当する場合は、次の手順に従ってください。それ以外の場合 は、「接続ファクトリを設定する」に進んでください。
証明書が certFile に保存され、trustStoreFile がキーストアであると仮定して、次のコマンドを実行します。
JRE_HOME/bin/keytool -import -trustcacerts -alias aliasForCertificate -file certFile -keystore trustStoreFile
次の質問に YES と答えます。Trust this certificate?
クライアントアプリケーションを起動するコマンドに -D オプションを使用して、次の JSSE プロパティーを指定する必要もあります。
javax.net.ssl.trustStore=trustStoreFile javax.net.ssl.trustStorePassword=trustStorePasswd
HTTPS サポートを有効にするには、接続ファクトリの imqAddressList 属性を HTTPS トンネルサーブレット URL に設定する必要があります。HTTPS トンネルサーブレット URL の一般的な構文は次のとおりです。
https://hostName:portNumber /contextRoot/tunnel
hostName:portNumber は、HTTPS トンネルサーブレットをホストする Web サーバーの名前とポートです。contextRoot は、Web サーバーにトンネルサーブレットを配備したときに設定したパスです。
接続ファクトリ属性の全般と imqAddressList 属性の詳細については、『Message Queue Developer's Guide for Java Clients』を参照してください。
接続ファクトリ属性の設定は、次のいずれかの方法で行います。
接続ファクトリ管理対象オブジェクトを作成する imqobjmgr コマンドで --o オプションを使用するか (「接続ファクトリの追加」を参照)、管理コンソール (imqadmin) を使用して接続ファクトリ管理対象オブジェクトを作成するときに属性を設定します。
クライアントアプリケーションを起動するコマンドで -D オプションを使用します (『Message Queue Developer's Guide for Java Clients』を参照)。
クライアントアプリケーションのプログラムで接続ファクトリを作成してから、API 呼び出しを使用して接続ファクトリの属性を設定します (『Message Queue Developer's Guide for Java Clients』を参照)。
複数のブローカを実行している場合、複数の Web サーバーとサーブレットインスタンスを設定する必要はありません。現在実行中のブローカ間で、1 つの Web サーバーと HTTPS トンネルサーブレットのインスタンスを共有できます。複数のブローカインスタンスが 1 つのトンネルサーブレットを共有している場合は、次に示すとおり、imqAddressList 接続ファクトリ属性を設定する必要があります。
https://hostName:portNumber /contextRoot/tunnel?ServerName= bkrHostName:instanceName
bkrHostName はブローカインスタンスのホスト名で、instanceName はクライアントにアクセスさせる特定のブローカインスタンスの名前です。
bkrHostName と instanceName に正しい文字列を入力したことを確認するには、ブラウザからサーブレット URL にアクセスして、HTTPS トンネルサーブレットの状態レポートを生成します。レポートでは、サーブレットがアクセスしているすべてのブローカが次のように一覧表示されます。
HTTPS tunnel servlet ready. Servlet Start Time : Thu May 30 01:08:18 PDT 2002 Accepting secured connections from brokers on port : 7674 Total available brokers = 2 Broker List : jpgserv:broker2 cochin:broker1 |
HTTP プロキシを使用して HTTPS トンネルサーブレットにアクセスする場合、次の設定を行います。
http.proxyHost システムプロパティーをプロキシサーバーのホスト名に設定します。
http.proxyPort システムプロパティーをプロキシサーバーのポート番号に設定します。
クライアントアプリケーションを起動するコマンドに -D オプションを使用して、これらのプロパティーを設定できます。