Diferenţa de comportament pentru validarea numelui de gazdă al serviciului web

Când sunt rulate servicii web pe Liberty, numele de gazdă dat în URL-ul HTTPS este validat cu certificatul în mod implicit, în timp ce în WebSphere Application Server tradiţional nu se face aceasta. Dacă numele de gazdă nu este valid, serverul Liberty aruncă următoarea excepţie:

java.io.IOException: The https URL hostname does not match the Common Name (CN) on the server certificate in the client's truststore. Asiguraţi-vă că certificatul de server este corect sau pentru a dezactiva această verificare (NU este recomandat pentru producţie) setaţi proprietatea de configuraţie TLS client CXF disableCNCheck to true.

Această diferenţă de comportament afectează aplicaţiile client care utilizează Java API for XML Web Services (JAX-WS), care este furnizat de pachetul javax.xml.ws. Dacă sunt referite API-urile JAX-WS, proiectul este semnalat o dată.

Soluţia recomandată este de a crea un certificat de server cu numele de gazdă corect. Alternativ, puteţi personaliza comportamentul de validare prin setarea proprietăţii http.propite.tlsClientParameters.disableCNCheck pe clienţii JAX-WS care necesită dezactivarea validării numelui de gazdă. Acest lucru poate fi făcut prin adăugarea legării de aplicaţie <webservices-bnd> în fişierul server.xml şi setarea proprietăţii pe o bază per client cu elementul <service-ref>, aşa cum se vede în următorul exemplu:

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

Validarea numelui de gazdă poate fi de asemenea dezactivată prin adăugarea proprietăţii la elementul <service-ref> din fişierul ibm-ws-bnd.xml aşa cum se vede în următorul exemplu:

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

Pentru informaţii detaliate despre realizarea configuraţiilor de referinţă de servicii web pentru un client de servicii web pe Liberty, vedeţi următoarele resurse: