Histórico de mensagens sobre mtls em pix

EXIBINDO CONVERSAS RECENTES:

Texto: mtls
Canal: pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Você poderia tentar com o mtls.pix.ae, que faz a terminação de mTLS da GN e chama uma URL sua.

Avatar discord do usuario douglascosta9242

douglascosta9242

Ver Respostas

Boa tarde pessoal tudo bem? Tenho um problema em relação ao WebHook, alguém já configurou o certificado mTLS na Azure?

Avatar discord do usuario matheus_efi

matheus_efi

Ver Respostas

Boa tarde, <@!666766641358438413>. Para receber notificações de Pix enviados e Pix recebidos é necessário tem um webhook associado a sua chave Pix, o webhook é cadastrado utilizando o endpoint (PUT /v2/webhook/:chave) e os detalhes para a configuração do servidor e sobre o mTLS você encontra aqui: https://dev.gerencianet.com.br/docs/api-pix-endpoints#section-webhooks

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

As informações dos pagamentos recebidos, sim. Isso inclui quantas vendas você fez e quanto arrecadou, mas dados de clientes só se você pedir alguma coisa no campo solicitacaoPagador. Mas você recebe também, pois o mtls.pix.ae reencaminha.

Avatar discord do usuario joaobatista4234

joaobatista4234

Ver Respostas

mais as informações não iria para o site https://mtls.pix.ae ?

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Uma alternativa é o pix.ae do @anoni_mato:

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/

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

O problema é não haver suporte aparente do Firebase ou de qualquer recurso do GCE para mTLS. Eu já alertei uma pessoa do Google que o BACEN está pondo mTLS em tudo por aqui (Pix, Open Banking).

Avatar discord do usuario matheus_efi

matheus_efi

Ver Respostas

Boa tarde, não entendi muito bem, essa seria a configuração para recebimento das respotas do webhook ou para o cadastro do mesmo? Porque para o cadastro deve-se fazer uma requisição para PUT /v2/webhook/:chave informando o x-skip-mtls-checking": false, no cenário de hospedagem compartilhada. Posteriormente você vai precisar de uma rota para o recebimento das notificações do webhook, aí sim viria as configurações de request.socket.authorized.
Mais detalhes aqui: https://dev.gerencianet.com.br/docs/api-pix-endpoints#section-webhooks
Caso queira, também disponibilizamos SDK's com todos os endpoints da API Pix disponíveis: https://github.com/gerencianet

Avatar discord do usuario spontoni

spontoni

Ver Respostas

´´´app.put("/webhook", (request, response) => {

response.set({ "x-skip-mtls-checking": false })
response.header("x-skip-mtls-checking", false)

let data = request.body;

if (request.socket.authorized) {
response.status(200).end(JSON.stringify(data));
} else {
response.status(401).end(JSON.stringify({ erro: "Não autorizado", data: data }));
}
});´´´

Avatar discord do usuario matheus_efi

matheus_efi

Ver Respostas

Essa falha é referente a tentativa de cadastro em seu webhook, no entanto, não foi possível verificar o certificado (CA) da Gerencianet que pode ser obtido por este link (https://pix.gerencianet.com.br/webhooks/chain-pix-prod.crt) no caso de produção. Recomendo verificar a documentação do mTLS e os exemplos disponibilizados (https://dev.gerencianet.com.br/docs/api-pix-endpoints#section-entendendo-o-padr-o-mtls).
Em resumo, a Gerencianet faz 2 requisições ao seu servidor, a primeira sem verificar o certificado e a segunda verificando. Seu servidor deve estar configurado para rejeitar a primeira e aceitar a segunda, fazendo um "hand-shake"

Avatar discord do usuario Prof Zoidberg

Prof Zoidberg

$config = [
"certificado" => "./gerenciamento.pem",
"client_id" => "XXXXX",
"client_secret" => "XXXXX"
];
$autorizacao = $chaveiro["access_token"];

$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api-pix.gerencianet.com.br/v2/webhook/XXXXX',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_SSLCERT => $config["certificado"], // Caminho do certificado
CURLOPT_SSLCERTPASSWD => $chaveiro["access_token"],
CURLOPT_POSTFIELDS =>'{
"webhookUrl": "https://XXXXX/webhook.php"
}',
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer $autorizacao",
'x-client-cert-pem: ./gerenciamento.pem',
'x-skip-mtls-checking: false'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;

Avatar discord do usuario .teomacedo

.teomacedo

Olá!
Não estou conseguindo fazer funcionar seguindo a referencia desse segundo exemplo proposto na documentação.


:443> # Porta HTTPS
#
# ...
#

ServerName dominiodetestes.com.br
SSLCertificateFile /etc/letsencrypt/live/pixspeak.com.br/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/pixspeak.com.br/privkey.pem

# mTLS Gerencianet
SSLVerifyClient none

SSLVerifyClient require
SSLVerifyDepth 3


#
# ...
#



o retorno que recebo é o seguinte:

{
"nome": "webhook_invalido",
"mensagem": "A URL informada respondeu com o código HTTP 403"
}

____
porem se eu uso o primeiro modelo de exemplo que é indicado para sub-dominios, então funciona.
Enfim, preciso configurar o apache para que os certificados sejam solicitados apenas quando a url for (dominiodetestes.com.br/webhook), mas assim como comentado acima, mesmo usando o modelo da documentação, não estou conseguindo. O que será que estou fazendo de errado?

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Não configura. Use um outro servidor para atender essa conexão, que pode ser um VPS seu mesmo, o API Gateway da AWS, o mtls.pix.ae do @anoni_mato...

Avatar discord do usuario rubenskuhl

rubenskuhl

# #
# Utilize o primeiro exemplo, caso queira requerir o certificado para autenticação #
# mútua em qualquer rota do domínio indicado no VirtualHost. #
# Funciona bem para sub-domínios Exemplo: www.webhook.seu_dominio.com.br #
#
#


:443> # Porta HTTPS
#
# ...
#

SSLCertificateFile /caminho_certificado/fullchain_ssl.pem #fullchain associado ao seu certificado SSL do domínio
SSLCertificateKeyFile /caminho_certificado/privkey_ssl.pem #privkey associada ao seu certificado SSL do domínio

# mTLS Gerencianet
SSLCACertificateFile /caminho_certificado/chain-pix-prod.crt #Chave pública da Gerencianet
SSLVerifyClient require
SSLVerifyDepth 3

#
# ...
#




# #
# Utilize o segundo exemplo, caso queira requerir o certificado para autenticação #
# mútua em apenas uma rota do domínio indicado no VirtualHost. #
# Exemplo: www.seu_dominio.com.br/webhook #
# #


:443> # Porta HTTPS
#
# ...
#

SSLCertificateFile /caminho_certificado/fullchain_ssl.pem #fullchain associado ao seu certificado SSL do domínio
SSLCertificateKeyFile /caminho_certificado/privkey_ssl.pem #privkey associada ao seu certificado SSL do domínio

# mTLS Gerencianet
SSLVerifyClient none

SSLVerifyClient require
SSLVerifyDepth 3


#
# ...
#

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Sim, o requisito de mTLS é checado também na homologação. O que é bom, quanto mais perto da produção sem ser produção, melhor.

Avatar discord do usuario ajcastello

ajcastello

certo, estou pesquisando para entender melhor como aplicar o mTLS ao Firebase, porém com dificuldade, uma vez que ele possui uma lib para as functions e já aplica um SSL.

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

mTLS é necessário sempre, independente do seu ambiente.

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Para definir qual URL será o seu endereço de retorno, você deverá consumir o endpoint PUT /v2/webhook/:chave_pix passando no body da requisição o parâmetro webhookUrl com sua URL.

Complementando, é importante que em seu domínio que representa o seu servidor, esteja configurado a chave pública da Gerencianet para que ocorra a autenticação mútua (mTLS).
Você encontra mais detalhes em: https://dev.gerencianet.com.br/docs/api-pix-endpoints#section-webhooks