Author Image

leonardo_apereira

Oct 15, 2021

Configuração de Webhook com Erro UNABLE_TO_VERIFY_LEAF_SIGNATURE

configuração webhookNode.jsApachehttpsGerencianetfalha SSLcertificado SSL

Quando peço para configurar o webhook, ele esta me retornando:

"nome":"webhook_invalido",
"mensagem":"A requisição na URL informada falhou com o erro: UNABLE_TO_VERIFY_LEAF_SIGNATURE"

Fiz por nodejs, esta funcionando o https e salvei o certificado .. será que precisa fazer a configuração no Apache tb?

Acho que tem algo a ver com minha configuração:
npm config ls -l

Mas não consegui identificar

Respostas (5):
Avatar discord do usuario rubenskuhl

rubenskuhl

15/10/2021

Mas quem está atendendo a porta 443, é o Apache ou ou Express ?

Avatar discord do usuario leonardo_apereira

leonardo_apereira

17/10/2021

Oi @matheus_efi, tem alguma dica ou sugestão para este erro? Obrigado

Avatar discord do usuario joao_efi

joao_efi

17/10/2021

Bom dia <@!728929518344994836> tudo bem? 🙂
Manda aqui um trecho do código com as configurações https pra gente dar uma olhada!

Avatar discord do usuario leonardo_apereira

leonardo_apereira

17/10/2021

Beleza! Tudo bem? <@!795645731385901076>

Obrigado pela ajuda, segue:

const express = require("express");
const app = express();
const { WebhookClient } = require("dialogflow-fulfillment");
const bodyParser = require("body-parser");
const mysql = require ('mysql');
var logger = require('morgan');

////////////////// HTTPS
const fs = require("fs");
const https = require("https");
const options = {
key: fs.readFileSync("key.pem"),
cert: fs.readFileSync("cert.crt"),
ca: fs.readFileSync("chain-pix-prod.crt"),
minVersion: "TLSv1.2",
requestCert: true,
rejectUnauthorized: false
};
///////////////// HTTPS (FIM)

app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static("public"));


////////////////// GERENCIANET (PIX)
app.post("/gerencianet", (request, response) => {
console.log('Entrou gerencia-net');
response.status(200).end();
// Verifica se a requisição que chegou nesse endpoint foi autorizada
if (request.socket.authorized) {
response.status(200).end();
} else {
response.status(401).end();
}
});

// Endpoind para recepção do webhook tratando o /pix
app.post("/gerencianet/pix", (request, response) => {
response.status(200).end();
console.log('Entrou gerencia-net');
if (request.socket.authorized){
var body = request.body;
console.log(body);
response.status(200).end();
}else{
response.status(401).end();
}
});
//////////////////GERENCIANET - FIM(PIX)

//////////////////////////// HTTPS
https.createServer(options, app).listen(8000);
console.log('Servido NODE (HTTPS) na Porta: 8000!');
/////////////////////////// HTTPS

Avatar discord do usuario joao_efi

joao_efi

18/10/2021

Fala <@!728929518344994836> ! tudo ótimo por aqui!
Verifiquei aqui e essa falha pode estar acontecendo por conta de algum módulo de um repositório com um certificado SSL incompatível com os demais.
Atualizei nossa documentação também pois notei que o body-parser está "depreciado" e as funções foram incorporadas ao express, dessa forma pode remover a linha
const bodyParser = require("body-parser");
E substituir o trecho:

js
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
Por:
js
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
E veja se funciona para você!

Caso a falha persista, você pode contornar esse problema utilizando o comando:
npm config set strict-ssl false
Lembrando de defini-lo como true posteriormente, para que você não instale acidentalmente um módulo não confiável no qual você realmente não confia.