Rozdíl chování pro ověření názvu hostitele webové služby

Při spuštění webových služeb na serveru Liberty je standardně název hostitele uvedený v adrese URL protokolu HTTPS ověřen certifikátem, zatímco v produktu WebSphere Application Server traditional tomu tak není. Pokud název hostitele není platný, server Liberty vygeneruje následující výjimku:

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 the server certificate is correct, or to disable this check (NOT recommended for production) set the CXF client TLS configuration property disableCNCheck to true.

Tento rozdíl chování ovlivňuje aplikace klienta používající rozhraní JAX-WS (Java API for XML Web Services) poskytovaná balíkem javax.xml.ws. Pokud se na rozhraní JAX-WS odkazuje, je projekt označen jednou.

Doporučené řešení spočívá ve vytvoření certifikátu serveru se správným názvem hostitele. Volitelně můžete upravit chování ověření nastavením vlastnosti http.conduit.tlsClientParameters.disableCNCheck na klientech JAX-WS vyžadujících zakázání ověření názvu hostitele. To lze provést přidáním vazby aplikace <webservices-bnd> v souboru server.xml a nastavením vlastnosti, na základě jednotlivých klientů, v prvku <service-ref>, jak ukazuje následující příklad:

<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>

Ověření názvu hostitele lze také zakázat přidáním vlastnosti do prvku <service-ref> souboru ibm-ws-bnd.xml, jak je uvedeno v následujícím příkladu:

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

Podrobné informace o konfiguraci odkazů na webové služby pro klienta webových služeb na serveru Liberty naleznete v následujícím prostředku: