10.11 SSLプロトコルによる接続

Webサービスクライアントから,SSLプロトコルに対応したWebサービスに接続できます。

ここでは,SSLプロトコルによる接続に必要なプロパティの設定について説明します。

<この節の構成>
(1) プロパティ値の指定
(2) プロパティの設定方法
(3) ホスト名検証についての注意事項

(1) プロパティ値の指定

SSLプロトコルでWebサービスにアクセスするには,JDKにサポートされているプロパティに値を指定して,SSLプロトコルの情報を設定します。SSLプロトコルによる接続をするためのプロパティ,および指定内容を次の表に示します。

表10-15 SSLプロトコルによる接続をするためのプロパティ

項番プロパティ指定内容
1javax.net.ssl.trustStoreトラストストアを指定します。
2javax.net.ssl.trustStorePasswordトラストストアのパスワードを指定します。

これらのプロパティは必要に応じて指定してください。なお,トラストストアを指定しない場合は,<JDKインストールディレクトリ>/lib/security/jssecacertsなどのデフォルト値が使用されます。

JDKのプロパティについては,JDKのドキュメントを参照してください。

(2) プロパティの設定方法

プロパティの指定値を有効にするために,プロパティをシステムプロパティに設定します。プロパティの設定方法は,Webサービスクライアントの実行形態によって異なります。

プロパティの設定例を示します。

javax.net.ssl.trustStore=<トラストストア>
javax.net.ssl.trustStorePassword=<トラストストアのパスワード>

プロパティの設定を追加する位置についての決まりはありません。

(3) ホスト名検証についての注意事項

Webサービスクライアントから,SSLプロトコルに対応したWebサービスに接続する場合,エンドポイントアドレスに含まれるホスト名と,証明書のホスト名が一致しているかどうかが検証されます。使用されるHostnameVerifierはJDKのデフォルトの実装です。JDKのデフォルトのHostnameVerifierの動作についてはJDKのドキュメントを参照してください。

動作定義ファイル,またはメッセージコンテキストで設定を行うことでホスト名検証が行われないようにすることができます。ホスト名検証が行われないようにするためのプロパティ,および指定内容を次の表に示します。

表10-16 ホスト名検証が行われないようにするためのプロパティ

項番プロパティ指定内容必須
1com.cosminexus.xml.ws.client.http.HostnameVerificationPropertyホスト名検証を省略する場合,trueを指定します。省略しない場合,falseを指定します。
(凡例)
△:必要に応じてプロパティを指定することを示します。

ホスト名検証が行われないようにする場合の注意事項
  • メッセージコンテキストへの指定が有効になるのは,Webサービス呼び出し時だけで,Webサービス呼び出し前のjavax.xml.ws.Serviceクラス生成で発生するメタデータ(WSDL)取得時には適用されません。
    メタデータ取得時にホスト名検証の有無を設定する場合は,共通定義ファイルまたはプロセス別の定義ファイルに記述するか,別途WSDLをローカルマシンにダウンロードして使用してください(ローカルマシンにあるWSDLを使用する場合は,メタデータ取得時にリモートマシンへの接続が発生しません)。WSDLから別途インポートされるWSDLが存在する場合は,インポートされるWSDLもローカルマシン上にダウンロードしてください。
  • 同じプロセスで動作する複数のWebサービスクライアントによって,ホスト名検証の有無が異なる場合は,プロセス別の定義ファイルや共通定義ファイルにプロパティを含めないで,メッセージコンテキストだけに含めるようにしてください。
    同様に,同じシステムで動作する複数のプロセスによって,ホスト名検証の有無が異なる場合は,共通定義ファイルにプロパティを含めないで,プロセス別の定義ファイルかメッセージコンテキストだけに含めるようにしてください。

プロパティを動作定義ファイルに設定する方法については,「10.1.2 共通定義ファイルの設定項目」を参照してください。メッセージコンテキストに設定する方法については,「19.2.5 メッセージコンテキストの使用」を参照してください。