Diferença de comportamento para validação do nome do host do serviço da web

Ao executar serviços da web no Liberty, o nome do host especificado na URL HTTPS é validado com o certificado por padrão, enquanto no WebSphere Application Server tradicional não é. Se o nome do host não for válido, o servidor Liberty lançará a exceção a seguir:

java.io.IOException: O nome do host da URL https não corresponde ao Nome Comum (CN) no certificado do servidor no armazenamento confiável do cliente. Certifique-se de que o certificado do servidor esteja correto ou para desativar esta verificação (NÃO recomendado para produção) configure a propriedade de configuração do TLS do cliente do CXF disableCNCheck como true.

Essa diferença de comportamento afeta os aplicativos clientes que usam o Java API for XML Web Services (JAX-WS), que é fornecido pelo pacote javax.xml.ws. Se as APIs JAX-WS forem referenciadas, o projeto será sinalizado uma vez.

A solução recomendada é criar um certificado do servidor com o nome do host correto. Como alternativa, é possível customizar o comportamento de validação, configurando a propriedade http.conduit.tlsClientParameters.disableCNCheck em clientes do JAX-WS que requerem a desativação da validação do nome do host. Isso pode ser feito incluindo a ligação de aplicativos <webservices-bnd> no arquivo server.xml e configurando a propriedade em uma base por cliente com o elemento <service-ref> como visto no exemplo a seguir:

<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>
⮀ͦt;/enterpriseApplication>

A validação do nome do host também pode ser desativada incluindo a propriedade no elemento <service-ref> do arquivo ibm-ws-bnd.xml, como visto no exemplo a seguir:

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

Para obter informações detalhadas sobre como configurar as configurações de referência de serviços da web para um cliente de serviços da web no Liberty, consulte o recurso a seguir: