Web サービス・アクセスに対する SSL 通信の使用可能化

クライアント・アプリケーションが Web サービスにアクセスできるように SSL 通信を構成 することができます。

始める前に

Web サービス・アクセスに対して SSL 通信を使用可能化に する前に、以下の前提条件を満たす必要があります。
  • クライアントおよびプロバイダー用の自己署名された公開鍵と秘密鍵 のペアを生成します。
    keytool -genkey -alias default -keystore myKey.jks -dname "CN=myServer, O=IBM, C=CN"
        -storepass passw0rd -keypass passw0rd -storetype jks  -validity 1000 -keyalg RSA
  • myKey.jks ファイルを ${server.config.dir}/resources/security ディレクトリーにコピーします。
注: keytool ユーティリティーは Java™ インストール・ディレクトリーに入っています。

このタスクについて

保護された Web サービス・リソースにアクセスする ためにセキュア HTTP プロトコルと共に Web サービス・クライアント・アプリケーションを使用する必要がある場合、 すべてのメッセージは SSL 仕様に従って暗号化されます。

手順

  1. server.xml ファイルで jaxws-2.2servlet-3.0 (または servlet-3.1)、および appSecurity-2.0 の各フィーチャーを有効にします。
    <featureManager>
      <feature>jaxws-2.2</feature>
      <feature>servlet-3.0</feature>
      <feature>appSecurity-2.0</feature>
    </featureManager>
  2. server.xml ファイル内で SSL エレメントを構成します。
    <sslDefault sslRef="customizeSSLConfig" />
    <ssl id="customizeSSLConfig" keyStoreRef="serverKeyStore" trustStoreRef="serverTrustStore" />
    <keyStore id="serverKeyStore" location="myKey.jks" type="JKS" password="passw0rd" />
    <keyStore id="serverTrustStore" location="myKey.jks" type="JKS" password="passw0rd" />
  3. Web サービス・エンドポイントを指定することによって、サービス・プロバイダーを構成します。
    1. Web サービスを作成します。
      @WebService(serviceName = "SayHelloPojoService",
                  portName = "SayHelloPojoPort")
      public class SayHelloPojoService implements SayHelloService {
      	...
      }
      
      @WebService(serviceName = "SayHelloStatelessService",
                  portName = "SayHelloStatelessPort",
                  endpointInterface = "com.ibm.ws.jaxws.transport.server.security.SayHelloService")
      @Stateless(name = "SayHelloSessionBean")
      public class SayHelloStatelessService implements SayHelloLocal {
      	...
      }
    2. サービス・プロバイダー用の ibm-ws-bnd.xml ファイルを構成します。
      <?xml version="1.0" encoding="UTF-8"?>
      <webservices-bnd xmlns="http://websphere.ibm.com/xml/ns/javaee" 
      		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      		xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee
          http://websphere.ibm.com/xml/ns/javaee/ibm-ws-bnd_1_0.xsd " 
      		version="1.0">
      	<http-publishing>
      		<webservice-security> 
      			<security-constraint>
      				<web-resource-collection>
      					<web-resource-name>All</web-resource-name>
      					<url-pattern>/*</url-pattern>
      					<http-method>GET</http-method>
      					<http-method>POST</http-method>
      				</web-resource-collection>
      				<user-data-constraint>
      					<transport-guarantee>CONFIDENTIAL</transport-guarantee>
      				</user-data-constraint>
      			</security-constraint>                     
      		</webservice-security>
      	</http-publishing>
      </webservices-bnd>
      注: ibm-ws-bnd.xml ファイル は、Web アプリケーションの /WEB-INF ディレクトリー内にあるか、 または、EJB ベースの Web サービス・アプリケーション (JAR アーカイブ) の /META-INF ディレクトリー 内になければなりません。
  4. Web サービス・エンドポイントを指定することによって、 サービス・クライアントを構成します。例えば、クライアント・アプリケーション が TransportSecurityClient.war という名前の Web アプリケーションであるとします。
    1. クライアント・アプリケーションを server.xml ファイル内で構成します。
      <application id="TransportSecurityClient" name="TransportSecurityClient" 
      		location="TransportSecurityClient.war"
      		context-root="TransportSecurityClient" type="war" />
    2. クライアント・アプリケーション用の ibm-ws-bnd.xml ファイル を構成します。
      <?xml version="1.0" encoding="UTF-8"?>
      <webservices-bnd id="idvalue0" version="1.0" xmlns="http://websphere.ibm.com/xml/ns/javaee" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee
          http://websphere.ibm.com/xml/ns/javaee/ibm-ws-bnd_1_0.xsd " >
      	<!-- POJO service reference binding-->
      	<service-ref name="service/SayHelloPojoService">
      		<port name="SayHelloPojoPort" 
      				namespace="http://ibm.com/ws/jaxws/transport/security/"
      				ssl-ref="customizeSSLConfig"/>
          <properties http.conduit.tlsClientParameters.disableCNCheck="true" />
      	</service-ref>
      	<!-- Stateless service reference binding-->
      	<service-ref name="service/SayHelloStatelessService">
      		<port name="SayHelloStatelessPort" 
      				namespace="http://ibm.com/ws/jaxws/transport/security/"
      				ssl-ref="customizeSSLConfig"/>
          <properties http.conduit.tlsClientParameters.disableCNCheck="true" />	
      </service-ref>
      </webservices-bnd>
      注:
      • ibm-ws-bnd.xml ファイルは、クライアント Web アプリケーションの /WEB-INF ディレクトリー 内になければなりません。
      • ssl-ref 属性の値は、 server.xml ファイル内の ssl エレメントの ID 値と一致している必要があります。
      • ibm-ws-bnd.xml ファイル内に ssl-ref 属性が指定されていない場合、Liberty 内にデフォルト SSL 構成があれば、その構成が Web サービス・エンジンによって使用されます。
      • http.conduit.tlsClientParameters.disableCNcheck 属性 は、リモート・サーバーを検証するかどうかを制御するために使用されます。この属性が true の 場合は hostName 検証は無視されるため、実稼働環境 ではこの属性に false を使用してください。
    3. WSDL ロケーションを使用してクライアント・スタブを生成します。
      @WebServiceClient(name = "SayHelloPojoService",
                        targetNamespace = "http://ibm.com/ws/jaxws/transport/security/",
                        wsdlLocation = "https://localhost:8020/TransportSecurityProvider/unauthorized/employPojoService?wsdl")
      public class SayHelloPojoService
                      extends Service
      {...}
      
      @WebServiceClient(name = "SayHelloStatelessService",
          targetNamespace = "http://ibm.com/ws/jaxws/transport/security/",
          wsdlLocation = "https://localhost:8020/TransportSecurityProvider/unauthorized/EmployStatelessService?wsdl")
      public class SayHelloStatelessService
                      extends Service
      {...}
    4. @WebServiceRef アノテーションを 使用して、Web サービスをサーブレットに注入します。例えば、TestJaxWsTransportSecurityServlet などです。
      @WebServiceRef(name = "service/SayHelloPojoService")
      SayHelloPojoService pojoService;
      
      @WebServiceRef(name = "service/SayHelloStatelessService")
      SayHelloStatelessService statelessService;

トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twlp_sec_ws_ssl
ファイル名: twlp_sec_ws_ssl.html