JSSEHelper API を使用した、アウトバウンド SSL 構成のプログラマチックな指定
WebSphere® Application Server には、アウトバウンド接続を行う前に、使用する Secure Sockets Layer (SSL) 構成をプログラマチックに指定する方法が用意されています。com.ibm.websphere.ssl.JSSEHelper インターフェースには、SSL 構成を処理するためのアプリケーション・プログラミング・インターフェース (API) の完全セットが用意されています。
このタスクについて
アウトバウンド接続を行う前に、使用する Secure Sockets Layer (SSL) 構成をプログラマチックに指定する際は、接続状況に最も適合するアプローチを選択してください。
手順
- JSSEHelper API のインスタンスを取得します。
com.ibm.websphere.ssl.JSSEHelper jsseHelper = com.ibm.websphere.ssl.JSSEHelper.getInstance();
- WebSphere Application Server 構成から SSL プロパティーを取得するか、アプリケーションに用意されている SSL プロパティーを使用します。 以下のオプションのいずれかを選択します。
- 以下の例に示すような、同じ管理有効範囲内以上での別名の方向選択。
try { String alias = "NodeAServer1SSLSettings"; // As specified in the WebSphere SSL configuration Properties sslProps = jsseHelper.getProperties(alias); } catch (com.ibm.websphere.ssl.SSLException e) { e.printStackTrace(); // handle exception }
- プログラマチック、方向、ダイナミック・アウトバウンド、または管理有効範囲の選択のための getProperties API の使用 (優先順位ルールおよび継承に基づく)。
SSL ランタイムは、getProperties API を使用して、特定のプロトコルに対して使用する SSL 構成を決定します。
この決定は、入力 (sslAlias および connectionInfo) およびプロパティーが呼び出された管理有効範囲の両方に基づいています。
getProperties API は、以下の順番で決定を行います。
- API が、スレッドでプロパティーが既に存在しているかどうかを検査します。
- API が、ENDPOINT_NAME、REMOTE_HOST、または REMOTE_PORT に一致するダイナミック・アウトバウンド構成を検査します。
- API が、オプションの sslAlias プロパティーが指定されているかどうかを検査します。 すべてのプロトコルを直接または中央管理対象として構成できます。 プロトコルが直接として構成されている場合、sslAlias パラメーターは null です。 プロトコルが中央管理対象として構成されている場合でも、sslAlias パラメーターは null です。
- 選択が行われなかった場合、API はそれが呼び出された管理有効範囲に基づいて、ダイナミック・アウトバウンド構成を選択します。 同じ有効範囲内でダイナミック・アウトバウンド構成が定義されていない場合は、階層を検索して見つけます。
最後に、セルを有効範囲とする SSL 構成 (WebSphere Application Server Network Deployment) またはノードを有効範囲とする SSL 構成 (基本アプリケーション・サーバー) を選択します。 com.ibm.websphere.ssl.SSLConfigChangeListener パラメーターは、getProperties API への呼び出しによって選択された SSL 構成が変更された場合に通知されます。 プロトコルは、再度 API を呼び出して、以下の例のように新しいプロパティーを取得することができます。
try { String sslAlias = null; // The sslAlias is not specified directly at this time. String host = "myhost.austin.ibm.com"; // the target host String port = "443"; // the target port HashMap connectionInfo = new HashMap(); connectionInfo.put(JSSEHelper.CONNECTION_INFO_DIRECTION, JSSEHelper.DIRECTION_OUTBOUND); connectionInfo.put(JSSEHelper.CONNECTION_INFO_REMOTE_HOST, host); connectionInfo.put(JSSEHelper.CONNECTION_INFO_REMOTE_PORT, Integer.toString(port)); connectionInfo.put(JSSEHelper.CONNECTION_INFO_ENDPOINT_NAME, JSSEHelper.ENDPOINT_IIOP); java.util.Properties props = jsseHelper.getProperties(sslAlias, connectionInfo, null); } catch (com.ibm.websphere.ssl.SSLException e) { e.printStackTrace(); // handle exception }
- 以下の例に示すように、独自の SSL プロパティーを作成し、それらをランタイムに引き渡します。
try { // This is the recommended "minimum" set of SSL properties. The trustStore can // be the same as the keyStore. Properties sslProps = new Properties(); sslProps.setProperty("com.ibm.ssl.trustStore", "some value"); sslProps.setProperty("com.ibm.ssl.trustStorePassword", "some value"); sslProps.setProperty("com.ibm.ssl.trustStoreType", "some value"); sslProps.setProperty("com.ibm.ssl.keyStore", "some value"); sslProps.setProperty("com.ibm.ssl.keyStorePassword", "some value"); sslProps.setProperty("com.ibm.ssl.keyStoreType", "some value"); jsseHelper.setSSLPropertiesOnThread(sslProps); } catch (com.ibm.websphere.ssl.SSLException e) { e.printStackTrace(); // handle exception }
- 以下の例に示すような、同じ管理有効範囲内以上での別名の方向選択。
- JSSEHelper.setSSLPropertiesOnThread(props) API を使用してスレッド上で Properties オブジェクトを設定し、ランタイムがそれを取得して、同じ JSSEHelper.getProperties API を使用するようにします。 また、以下の例に示すように、jsseHelper.getSSLPropertiesOnThread() API を使用して設定された後で、スレッドからプロパティーを取得することもできます。
try { Properties sslProps = jsseHelper.getProperties(null, connectionInfo, null); jsseHelper.setSSLPropertiesOnThread(sslProps); } catch (com.ibm.websphere.ssl.SSLException e) { e.printStackTrace(); // handle exception }
- 接続が完了したら、null 値を setPropertiesOnThread API に引き渡すことによって、スレッドから SSL プロパティーをクリアする必要があります。
try { jsseHelper.setSSLPropertiesOnThread(null); } catch (com.ibm.websphere.ssl.SSLException e) { e.printStackTrace(); // handle exception }


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsec_ssloutconfiguseJSSE
ファイル名:tsec_ssloutconfiguseJSSE.html