Verhaltensunterschied bei der Validierung von Web-Service-Hostnamen

Bei der Ausführung von Web-Services in Liberty wird der in der HTTPS-URL angegebene Hostname anders als in WebSphere Application Server Traditional standardmäßig anhand des Zertifikats validiert. Wenn der Hostname nicht gültig ist, löst der Liberty-Server die folgende Ausnahme aus:

java.io.IOException: The https URL hostname does not match the Common Name (CN) on the server certificate in the client's truststore. Make sure server certificate is correct, or to disable this check (NOT recommended for production) set the CXF client TLS configuration property disableCNCheck to true.

Dieser Verhaltensunterschied wirkt sich auf Clientanwendungen aus, die Java-API für XML Web Services (JAX-WS) aus dem javax.xml.ws-Paket verwenden. Wenn die JAX-WS-APIs referenziert werden, wird das Projekt einmal markiert.

Die empfohlene Lösung ist, ein Serverzertifikat mit dem korrekten Hostnamen zu erstellen. Alternativ können Sie das Validierungsverhalten anpassen, indem Sie die Eigenschaft http.conduit.tlsClientParameters.disableCNCheck in JAX-WS-Clients festlegen, die eine Inaktivierung der Validierung des Hostnamens erfordern. Fügen Sie hierzu die Anwendungsbindung <webservices-bnd> in der Datei server.xml hinzu und legen Sie die Eigenschaft auf Clientbasis mit dem Element <service-ref> fest, wie im folgenden Beispiel gezeigt:

<enterpriseApplication id="SimpleEcho" name="SimpleEcho"  location="SimpleEcho.ear">
  <webservices-bnd moduleName="SimpleEcho">
<service-ref name="service/SimpleEchoService">
  <port name="SimpleEchoPort">
    <properties vendor="IBM"/>
  </port>
  <properties http.conduit.tlsClientParameters.disableCNCheck="true"/>
</service-ref>
  </webservices-bnd>
</enterpriseApplication>

Die Validierung des Hostnamens kann auch inaktiviert werden, indem Sie die Eigenschaft dem Element <service-ref> in der Datei ibm-ws-bnd.xml hinzufügen, wie im folgenden Beispiel gezeigt:

<service-ref name="service/SimpleEchoService">
  <port name="SimpleEchoPort">
    <properties vendor="IBM"/>
  </port>
  <properties http.conduit.tlsClientParameters.disableCNCheck="true"/>
</service-ref>

Ausführliche Informationen zur Konfiguration der Web-Service-Referenzkonfigurationen für einen Web-Service-Client in Liberty finden Sie in der folgenden Quelle: