SSL-Kommunikation für den Web-Service-Zugriff aktivieren

Sie können die SSL-Kommunikation konfigurieren, damit Ihre Clientanwendungen auf Web-Services zugreifen können.

Vorbereitende Schritte

Bevor Sie die SSL-Kommunikation für den Zugriff auf Web-Services aktivieren, müssen die folgenden Voraussetzungen erfüllt werden:
  • Generieren Sie ein Paar selbst signierter öffentlicher und privater Schlüssel für Client und Provider:
    keytool -genkey -alias default -keystore myKey.jks -dname "CN=myServer, O=IBM, C=CN"
        -storepass passw0rd -keypass passw0rd -storetype jks  -validity 1000 -keyalg RSA
  • Kopieren Sie die Datei myKey.jks in das Verzeichnis ${server.config.dir}/resources/security.
Anmerkung: Das Dienstprogramm keytool befindet sich in Ihrem Java™-Installationsverzeichnis.

Informationen zu diesem Vorgang

Wenn Sie für den Zugriff auf die gesicherten Web-Service-Ressourcen die Web-Service-Clientanwendung mit dem HTTPS-Protokoll verwenden müssen, werden alle Nachrichten entsprechend der SSL-Spezifikation verschlüsselt.

Vorgehensweise

  1. Aktivieren Sie die Features jaxws-2.2, servlet-3.0 (oder servlet-3.1) und appSecurity-2.0 in der Datei server.xml.
    <featureManager> 
      <feature>jaxws-2.2</feature>
      <feature>servlet-3.0</feature>
      <feature>appSecurity-2.0</feature>
    </featureManager>
  2. Konfigurieren Sie die SSL-Elemente in der Datei server.xml.
    <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. Konfigurieren Sie den Service-Provider, indem Sie die Web-Service-Endpunkte angeben.
    1. Erstellen Sie Web-Services.
      @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. Konfigurieren Sie die Datei ibm-ws-bnd.xml für den Service-Provider.
      <?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>
      Anmerkung: Die Datei ibm-ws-bnd.xml muss im Verzeichnis /WEB-INF einer Webanwendung oder im Verzeichnis /META-INF einer EJB-basierten Web-Service-Anwendung (JAR-Archiv) enthalten sein.
  4. Konfigurieren Sie den Service-Client, indem Sie die Web-Service-Endpunkte angeben. Beispielsweise ist die Clientanwendung eine Webanwendung mit dem Namen TransportSecurityClient.war.
    1. Konfigurieren Sie die Clientanwendung in der Datei server.xml.
      <application id="TransportSecurityClient" name="TransportSecurityClient" 
      				location="TransportSecurityClient.war"
      		context-root="TransportSecurityClient" type="war" />
    2. Konfigurieren Sie die Datei ibm-ws-bnd.xml für die Clientanwendung.
      <?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-Servicereferenzbindung -->
      	<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>
      	<!-- Statusunabhängige Servicereferenzbindung -->
      	<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>
      Anmerkung:
      • Die Datei ibm-ws-bnd.xml muss sich im Verzeichnis /WEB-INF der Client-Web-Anwendung befinden.
      • Der Wert des Attributs ssl-ref muss mit dem ID-Wert des Elements ssl in der Datei server.xml übereinstimmen.
      • Wird das Attribut ssl-ref in der Datei ibm-ws-bnd.xml nicht angegeben, verwendet die Web-Service-Engine die SSL-Standardkonfiguration in Liberty, sofern vorhanden.
      • Mit dem Attribut http.conduit.tlsClientParameters.disableCNcheck wird festgelegt, ob der ferne Server validiert wird. Verwenden Sie in einer Produktionsumgebung den Wert false für dieses Attribut, weil die Überprüfung von hostName ignoriert wird, falls dieses Attribut auf true gesetzt ist.
    3. Generieren Sie die Client-Stubs über die WSDL-Position.
      @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. Verwenden Sie die Annotation @WebServiceRef, um den Web-Service in das Servlet einzufügen. Beispiel: TestJaxWsTransportSecurityServlet.
      @WebServiceRef(name = "service/SayHelloPojoService")
      SayHelloPojoService pojoService;
      
      @WebServiceRef(name = "service/SayHelloStatelessService")
      SayHelloStatelessService statelessService;

Symbol das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 01.12.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twlp_sec_ws_ssl
Dateiname: twlp_sec_ws_ssl.html