Histórico de mensagens sobre mtls em pix

EXIBINDO CONVERSAS RECENTES:

Texto: mtls
Canal: pix
Avatar discord do usuario vitor.gt

vitor.gt

Ver Respostas

Bom dia, tudo bem?
Preciso de uma ajuda com o mTLS do webhook pix.
Estamos usando o Google Cloud App Engine para a nossa solução

A documentação oficial diz "SSL support for your App Engine app goes above and beyond basic SSL by offering globally-distributed SSL endpoints and built-in load balancing to serve your app securely, reliably, and quickly to a worldwide audience." (https://cloud.google.com/appengine/docs/standard/nodejs/securing-custom-domains-with-ssl)
E aqui diz "Google Cloud load balancers don't support client certificate-based authentication (mutual TLS, mTLS)." (https://cloud.google.com/load-balancing/docs/ssl-certificates#ssl-certificate-limits)

Voces já solucionaram algum caso parecido? Têm alguma ideia de alternativa? Alguma sugestão doq fazer?

Desde já, muito obrigado 🙂

Avatar discord do usuario rubenskuhl

rubenskuhl

E a questão de exposição você pode limitar usando uma entrada DNS menos óbvia do que mtls... pode ser ewfu32h4uienfwhefwh.dominio.com.br, e isso só a Gerencianet vai ter acesso.

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Solução é criar uma entrada DNS só para isso (ex: mtls.dominio.com.br) que não passe pelo proxy reverso da Cloudflare.

Avatar discord do usuario red_killer.

red_killer.

e para instalar o mTLS na cloudflare, precisa do certificado CSR

Avatar discord do usuario red_killer.

red_killer.

e me deparei com um problema quando fui instalar o certificado mTLS

Avatar discord do usuario felipoantonoff

felipoantonoff

Ver Respostas

Olá, pessoal, a Hospedagem configurou o mTLS para o Webhook do Pix, podem ver se fizeram certo:

ssl_client_certificate /home/site/chain-pix-prod.crt;
ssl_verify_client optional;
ssl_verify_depth 3;
location /webhook {
if ($ssl_client_verify != SUCCESS) {
return 403;
}
#rewrite ^(.)$ /webhook;
rewrite ^/webhook$ https://site.com.br/index.php?route=extension/payment/code_gerencianet_pix/webhook redirect;
}

Tirei a URL do site, basicamente na url extension/payment... fica a função que recebe o Webhook da Gerencianet Pix
Na parte de emissão do Pix criamos o Webhook usando a URL site.com.br/webhook, mas tem retornado erro:
CurlOperation timed out after 8001 milliseconds with 0 bytes received
ou Response {"nome":"webhook_invalido","mensagem":"A URL informada respondeu com o código HTTP 403"}

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

js
const express = require("express");
const fs = require("fs");
const https = require("https");
const bodyParser = require("body-parser");
var logger = require('morgan');

const httpsOptions = {
cert: fs.readFileSync(""), // Certificado SSL fullchain do dominio
key: fs.readFileSync("/"), // Chave privada SSL do domínio
ca: fs.readFileSync(""), // Certificado público da Gerencianet - baixe no link: https://pix.gerencianet.com.br/webhooks/chain-pix-prod.crt
minVersion: "TLSv1.2",
requestCert: true,
rejectUnauthorized: false, //Mantenha como false para que os demais endpoints da API não rejeitem requisições sem MTLS
};

const app = express();
const httpsServer = https.createServer(httpsOptions, app);
const PORT = 443;

app.use(logger('dev')); // Comente essa linha caso não queira que seja exibido o log do servidor no seu console
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

// Endpoint para configuração do webhook, você precisa cadastrar https://SEUDOMINIO.com/webhook
app.post("/webhook", (request, response) => {
// 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("/webhook/pix", (request, response) => {
if (request.socket.authorized){
//Seu código tratando a callback
/ EXEMPLO:
var body = request.body;
filePath = __dirname + "/data.json";
fs.appendFile(filePath, JSON.stringify(body) + "\n", function (err) {
if (err) {
console.log(err);
} else {
response.status(200).end();
}
})
/
response.status(200).end();
}else{
response.status(401).end();
}
});

httpsServer.listen(PORT, () =>
console.log(Express server currently running on port ${PORT})
);

Avatar discord do usuario ftgk

ftgk

Meu problema mesmo é a questão de configurar o mtls em si

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, <@!595407787216076811>. Tudo bem? 😄
Flesk que menciona, é o framework Python?
Provavelmente a configuração do mTLS com ele deve haver alguma particularidade.

Avatar discord do usuario ftgk

ftgk

Ver Respostas

Pessoal por favor tenho um problema urgente, estou com a demanda de configurar o flesk em um servidor da digital Ocean, Fiz tudo já porém quando uso o código da gerencianet com mtls ele simplesmente não funciona

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Isso é normal do mTLS, pois você não tem (nem deveria ter) o certificado da GN.

Avatar discord do usuario matheus_efi

matheus_efi

<@!676542738455330828> esse "evento" : "teste webhook" é um POST que a API da Gerencianet faz de teste em seu webhook, consiste em 2 requisições sendo a 1ª sem o certificado e a segunda com para ter o hand-shake do mTLS.

Avatar discord do usuario brubcruz

brubcruz

Ver Respostas

Bom dia
Em um servidor compartilhado (hostgator no caso) incluindo x-skip-mtls-checking como true quais outras configurações são necessárias?
Ao cadastrar a URL do webhook estou recebendo:
{"evento":"teste_webhook","data_criacao":"2021-08-06T12:37:04.450Z"}

Avatar discord do usuario Julia Efí

Julia Efí

Ver Respostas

Você está usando um servidor compartilhado? Se sim, é necessário incluir o atributo x-skip-mtls-checking como true. Se você não estiver utilizando um servidor compartilhado, é necessário configurar seu servidor com a autenticação mtls como mostra na documentação https://dev.gerencianet.com.br/docs/api-pix-endpoints#section-webhooks

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Separados. Não apenas pq são definidos separadamente, mas pq tem requisitos distintos (mTLS no caso do Pix)

Avatar discord do usuario joao_efi

joao_efi

Ver Respostas

Oi @Deleted User tudo bem? 🙂
No link abaixo você encontra todo o detalhamento de como funcionam as requisições na configuração do webhook.
https://dev.gerencianet.com.br/docs/api-pix-endpoints#section-webhooks
Já no link abaixo você encontra um vídeo produzido por um membro aqui da comunidade sobre como configurar o mTLS no Windows!
https://www.youtube.com/watch?v=mamqb3BHa-0

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

O certificado mTLS que você faz o download no dashboard é assinado por essa CA tem no pix/webhooks. Então dependendo do seu ambiente (de ele validar ou não a chain completa) você pode precisar da CA para fazer as requisições. Já o seu certificado .p12 você precisa sempre, não só para requisitar o token, mas também para usar o token nas outras requisições.

Avatar discord do usuario felcampelo

felcampelo

Ver Respostas

EU sei que para receber a notificação via webhook usa mTLS. Mas para solicitar o token de autenticação também precisa?

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Lembrando que na API Pix é usado mTLS, então você precisa apresentar o certificado emitido pela Gerencianet.