Histórico de mensagens sobre mtls em pix

EXIBINDO CONVERSAS RECENTES:

Texto: mtls
Canal: pix
Avatar discord do usuario nicolaujr.

nicolaujr.

tenho um nginx proxy, fazendo o meio campo do mTLS

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Você precisa criar uma área no seu site onde só entra com o mTLS. É isso que essa parte da config faz.

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

requestCert tem que ser true, rejectUnauthorized false.

const express = require("express");
const fs = require("fs");
const https = require("https");
var logger = require('morgan');

const httpsOptions = {
cert: fs.readFileSync(""), // Certificado fullchain do dominio
key: fs.readFileSync("/"), // Chave privada do domínio
ca: fs.readFileSync(""), // Certificado público da Gerencianet
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(express.json());
app.use(express.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 renato.barbosa.

renato.barbosa.

Ver Respostas

depois que inicio o server com o https.createServer, ele exige autenticação mtls em todas as rotas. mas há rotas que não são de integração com a gerencianet
e mesmo utilizando dos parametros requestCert e rejectUnauthorized como false, ainda tenho as demais rotas exigindo mtls

Avatar discord do usuario renato.barbosa.

renato.barbosa.

Bom dia pessoal. Estou tentando fazer a integração pix utilizando o certificado mtls em uma das rotas no node, mas estou tomando block em todas. Teriam um exemplo de código com autenticação mtls apenas no webhook?

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Então o que já apareceu aqui de alternativa com Cloudflare foi:
1) Criar uma entrada DNS específica para o webhook que não passa pelo proxy da CF, checando mTLS no servidor diretamente
2) Usar o Cloudflare Teams Enterprise, que tem mTLS com CA privada, que só custaria ter 1 usuário e poderia ser acessível.

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Pq a Cloudflare só suporta mTLS com CA Privada nas famílias Enterprise dos planos deles.

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Sim, Cloudflare e mTLS não rimam.

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

E você pode também checar se o CN do mTLS é gn-webhook-pix

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Lembrando que se você configura exemplo.com.br/webhook, a GN vai chamar exemplo.com.br/webhook/pix .

Tanto exemplo.com.br/webhook quanto exemplo.com.br/webhook/pix precisam existir e estar com mTLS configurado.

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Ou usar o mtls.pix.ae, que é de graça.

Pra quem tem dificuldades de implementar os webhooks por falta de suporte em hospedagem compartilhada para configurar mTLS, o Pix.ae agora oferece proxy de callbacks com mTLS.

Pra usar é muito simples: é só prefixar o seu domínio com mtls.pix.ae/. Por exemplo:

Para: https://exemplo.com.br/webhookpix
Use: https://mtls.pix.ae/exemplo.com.br/webhookpix

Obs: no ambiente de homologação, prefixe com mtls-h.pix.ae/
O autor e mantenedor do pix.ae é o <@!440035527127990273>, que não está online no momento mas é habituê do canal.

Avatar discord do usuario brunodelara

brunodelara

aqui tinhamos um servidor que nao dava pra usar mtls. Criamos uma maquina quase free na amazon, e roda so o webhook, acessando o mesmo banco da aplicação

Avatar discord do usuario _stallone_

_stallone_

Ver Respostas

Nuss me cobraram 4mil dólares pelo Enterprise só preciso usar o mTLS

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Foi o <@!147746431279562753> . A solução que ele usou foi usar o Cloudflare Teams. mTLS com CA privada é algo que só tem nos planos Enterprise, nem no gratuito nem no Pro... mas o que ele fez - pelo que entendi - foi contratar 1 usuário no Cloudflare Teams Enterprise.

Avatar discord do usuario _stallone_

_stallone_

Ver Respostas

Alguem já configurou o mTLS no cloudflaure?

Avatar discord do usuario _stallone_

_stallone_

Mais alguém já configurou o mTLS no IIS?

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Só a GN tem como apresentar a identidade requerida no mTLS. Se eu ou você conseguimos, está errado...

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

De fato não está com mTLS, pois chamando a URL:
{ "status": 200, "mensagem": "Requisição realizada com sucesso!", "dados": "" }

Avatar discord do usuario monkyalan

monkyalan

Ver Respostas

Boa noite !! Eu dnv kk
realmente eu não tinha visto direito, era um erro bobo, já resolvi
agora outro problema que me surgiu e eu não entendo porque..

Estou com todos os certificados e chaves SSL setados no apache, igual o exemplo dado na doc da API, e mesmo assim ele diz que minha url de webhook não está configurado para mTLS
URL webhook: https://{domain}/player/adicionar/webhook/

tem alguma ideia do que possa ser ?
imagem enviada na mensagem pelo usuario monkyalan
imagem enviada na mensagem pelo usuario monkyalan

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Não. Pode inclusive ser uma string aleatória se você quiser usar isso como validação de ser mesmo a GN, além do mTLS. E pode tanto ser um path quanto um hostname separado. Vale www.exemplo.com.br/dasdashjhj ou dsadasre.exemplo.com.br