Categorias
TOTVS Fluig

TOTVS FLUIG – Como resolver o erro PKIX path validation failed

Olá, Fluiger!

Atualmente, estou desenvolvendo um projeto Fluig integrado à uma API do SAP, para uma empresa da Colômbia. O primeiro passo para se comunicar com essa API, foi criar um serviço para guardar o Domínio, e depois só invocar esse serviço adicionando o endpoint, e as credenciais no corpo da requisição.

Mas, ao tentar fazer a primeira requisição, neste caso a de LOGIN,

retornou esse erro de segurança do Java “PKIX path validation failed: java.security.cert.CertPathValidatorException”.

Em uma busca rápida no Google, localizamos o motivo desse erro:

O erro acontece porque o servidor Java (JBoss/Wildfly) onde seu Fluig está rodando não confia no certificado SSL/TLS apresentado pela API HTTPS.

Isso geralmente ocorre por dois motivos:

  1. A API está usando um certificado autoassinado (self-signed).
  2. A API está usando um certificado assinado por uma Autoridade Certificadora (CA) interna ou privada, que não está na lista de CAs confiáveis padrão do Java.

Para resolver isso, é necessário “ensinar” o Java do seu Fluig a confiar neste certificado.
Ou seja, precisamos pegar o arquivo do certificado da API e dizer pro Java do Fluig confiar nele.

IMPORTANTE:  As instruções abaixo só são aplicáveis, caso você tenha acesso total ao servidor Fluig da sua empresa (on premise), e se o servidor for Windows. Possa ser que em servidores Linux, as instruções sejam diferentes.

Mas antes de qualquer coisa, precisamos garantir que a variável de ambiente JAVA_HOME esteja configurada corretamente:

  • No servidor do Fluig, acesse Painel de Controle > Sistema e Segurança > Sistema > Configurações avançadas do sistema
  • Em Propriedades do Sistema > aba Avançado > Variáveis de Ambiente
  • Em variáveis do sistema procure pela variável JAVA_HOME e edite a mesma. Deve ser algo como: C:\fluig\jdk-64. Caso não exista, é só criá-la.

Após cadastrado a variável JAVA_HOME, encontre a variável path. Dentro dela, deve existir a variável %JAVA_HOME%\bin Caso não exista, é só adicioná-la.

Agora sim, podemos seguir com os passos do Certificado da API:

  • Acesse a URL da API HTTPS no seu navegador.
  • Clique no cadeado ao lado da URL.
  • Vá em “A conexão é segura” -> “O certificado é válido”.
  • Vá na aba Detalhes.
  • Clique em Exportar (ou “Copiar para Arquivo…”).
  • Salve o certificado. Escolha o formato “Base-64 encoded X.509 (.CER)”.

    Eu salvei na pasta de downloads

Em seguida, precisamos localizar o arquivo CACERTS que fica na pasta de instalação do Java (JDK/JRE) que o meu Fluig (JBoss/Wildfly) está usando. No meu caso, é C:\fluig\jdk-64\lib\security\cacerts. Salve esse caminho.

Agora, abra o Prompt de Comando (CMD) do seu Windows, navegue até a pasta BIN que fica na pasta de instalação do Java (JDK/JRE) que o meu Fluig (JBoss/Wildfly) está usando. Em seguida, digite o comando a seguir, substituindo api_sap pelo nome que você atribuiu ao seu arquivo de certificado, em seguida o caminho que você o salvou, e em seguida o caminho completo até a pasta CACERTS

keytool -import -alias “api_sap” -file “C:\Users\Administrator\Downloads\api_sap.crt” -keystore “C:\fluig\jdk-64\lib\security\cacerts”

Ao pressionar a tecla ENTER, o keytool pedirá a senha da keystore cacerts. A senha padrão de fábrica do Java é changeit
O keytool perguntará se você confia no certificado. Digite yes e pressione a tecla ENTER.
Se tudo der certo, será exibida uma mensagem que o certificado foi adicionado com sucesso à keystore.

Por último, será necessário reiniciar os serviços do Fluig.

E após a reinicialização, a API poderá ser acessada com sucesso!

E ai!? Você gostou do conteúdo de Fluig de hoje? Deixe o seu comentário!
Forte abraço!!!

Fluig é uma marca registrada da Totvs S.A.
Fontes que me ajudaram a chegar na solução deste problema:

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *