2
respostas

Wildfly 10.1.0: cache de certificados no Apache CXF em conexões HTTPS. Como desabilitar?

Prezados,

Estou com um problema com a conexão HTTPS com o servidor do eSocial. Ocorre que quando numa sequência inicial de envio de lotes de eventos de um CNPJ, o arquivo PFX contento o certificado e-CNPJ é utilizado para estabelecer a conexão segura com o servidor do governo. Nessa fase, os arquivos XML são enviados com sucesso e validação do CNPJ do certificado contra o CNPJ do XML enviar também é feita com sucesso, ou seja, o CNPJ do certificado e do XML recebido são iguais, trata-se de um regra definida pelo eSocial. Entretanto, quando ocorre o envio de um novo lote de evento, mas de um novo CNPJ (diferente do último enviado), o software de mensageria busca o arquivo PFX desse novo CNPJ para estabelecer a conexão HTTPS com o servidor do governo. Nesse ponto, o eSocial, quando recebe o XML do novo CNPJ, informa que o CNPJ do certificado, usado para estabelecer a conexão segura, é diferente do CNPJ contido no XML recebido. Eu já fiz uma revisão cuidadosa de todo o código que configura a conexão segura, para me certificar que o arquivo PFX que é utilizado é o correto, ou seja, é o certificado do CNPJ correspondente ao XML que será enviado. Como usamos o Apache CXF para gerar as classes stubs a partir dos WSDLs dos web services do governo, acredito que o framework esteja criando um cache de certificados, fazendo que não ocorra a troca de certificados para fazer a chamada do web service de envio de lotes de eventos do eSocial. Outra informação importante para o entendimento do meu problema. Sempre que ocorre o erro de validação de certificado, eu tenho feito o shutdown e startup do WildFly 10.1.0. Após essa ação, o último XML rejeitado pela regra de negócio do eSocial é transmitido e aceito pelo sistema do governo. Em contra partida, quando muda o CNPJ do lote de eventos o erro na consistência do certificado volta a ocorrer, o que sugere que o certificado que foi usado para estabelecer a conexão não está mudando.

Dito isso, para contextualização dos leitores, pergunto aos participantes do fórum se o Apache CXF possui alguma configuração de cache de conexão com o endereço de end point do web service? Pelo comportamento da aplicação, me parece que, como a URL do serviço web é sempre a mesma, o Apache CXF está mantendo em cache a conexão (ou algo semelhante a isso) , mesmo a aplicação fazendo a busca do arquivo PFX do novo CNPJ que será transmitido para criar um conexão com esse novo certificado. Alguém pode me dar uma orientação do que está acontecendo e como posso revolver esse problema com o Apache CXF? Qualquer informação é bem-vinda. Desde já, agradeço pela atenção! Anderson Bestteti

2 respostas

Oi Anderson, é uma dúvida bem específica. Talvez demore um tempo para alguém conseguir dar uma resposta mais assertiva, peço que tenha paciência.

Em relação a dúvida em si... Geralmente o código gerado contém o código de conexão com o endpoint, eu daria uma olhada nesse código gerado para verificar se o que você que está acontecendo, de fato está acontecendo.

Olá Alberto,

Obrigado pela primeira interação. Eu estou correndo para solucionar esse problema antes do dia 8 de janeiro de 2018. Enquanto isso, estou procurando na documentação do Apache CXF alguma informação que posso me ajudar a entender como ele funciona e, quem sabe, assim eu tenha condições de mudar aparente comportamento.

Anderson Bestteti

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software