Histórico de mensagens sobre mtls

EXIBINDO CONVERSAS RECENTES:

Texto: mtls
# pix
Avatar discord do usuario cleversonmenur

cleversonmenur

Ver Respostas

Olá, @Efí

Ainda na labuta do Webhook em ambiente PaaS. Fiz os seguintes passos e creio estar quase lá:

- Criei uma conta na Amazon para o projeto
- Cadastrei o cartão de crédito
- Provisionei o Amazon API Gateway
- Configurei um custom domain nele
- Configurei o domínio no meu Registrar
- Habilitei o custom domain no API Gateway
- Criei certificado e habilitei o HTTPS
- Baixei o cert webhook da Gerencianet
- Criei uma Trust Store PKCS12
- Coloquei a cadeia da GN lá
- Converti a TS para o formato PEM
- Provisionei um armazenamento Amazon S3
- Subi a TS.pem
- Finalizei a configuração do custom domain
- Ativei o mTLS neste domínio
- Criei uma rota de API para o meu server
- Associei a rota ao custom domain com mTLS

Fui configurando e testando a cada passo. Quase tudo funcionando. A única coisa que não consigo é fazer uma requisição client para testar o mTLS já que não tenho o cert client do webhook.

Então…

- Invoquei o serviço PUT /webhook/{chave} passando no body a url e recebi o seguinte body com o status 400:

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

Supus ser algum erro no pem que usei para configurar o mTLS. E já experimentei o seguinte:

- Usei exatamente o CRT que baixei das docs da GN
- Fiz a conversão como citei acima (criando a TS)

Se vocês puderem fazer uma requisição mTLS com o certificado client correto para testar, a UTR é esta:

POST https://mtls.menur.app/vbeta1/establishments/mana/pix

O serviço está retornando 204 fixo para qualquer body json (não obrigatório).

Alguma luz? 🙏

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Se você quiser interagir com o pessoal do BACEN, eles respondem no GitHub, https://github.com/bacen/pix-api/issues . Mas se você pesquisar nos closed issues vai ver que o tema de mTLS é uma reclamação constante lá. E a posição do BACEN de que isso pode ser revisto na v3 (para o webhook, não para o sentido direto da API) também foi postada lá.

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Aí tem que perguntar para o BACEN. Mas Itaú e Gerencianet, por exemplo, usam AWS para seus ambiente de Pix. E o API Gateway do AWS é justamente uma solução de mTLS que tem sido empregada por clientes GN.

# pix
Avatar discord do usuario joelemanoel

joelemanoel

Ver Respostas

Isso é realmente bom. Mas acho que a preocupação do BACEN foi de justamente o pessoal não utilizar os meios de segurança. Impondo o mTLS obrigatoriamente eles cumpririam os requisitos de segurança.

# pix
Avatar discord do usuario cleversonmenur

cleversonmenur

O mTLS aí está servindo para "garantir" para o meu back-end que quem está chamando e mandando as requisições para meu webhook é um certificado gerado pela CA que está naquele cert disponibilizado no site da Gerencianet. O que estou "propondo", é que não houvesse essa restrição na chamada do webhook. Logo, o payload da requisição poderia não ser de confiança. Por isso, a chamada ao webhook seria apenas como um ping, como um push notification, contendo uma chave para que só então o webhook fosse, ativamente, buscar pela informação. É uma arquitetura diferente da que está. É como o Pag Seguro faz, por exemplo. E é tão seguro quanto, só que menos dependente de configuração junto à infra. Enfim... é só um pensamento. Vou ver como resolver de outra forma.

# pix
Avatar discord do usuario joelemanoel

joelemanoel

Ver Respostas

O @anoni_mato tem um serviço de mTLS que oferece menos configuração, você pode verificar com ele.

# pix
Avatar discord do usuario joelemanoel

joelemanoel

Ver Respostas

Eu concordo plenamente, mas em relação ao mTLS funciona bem, porém, há alguns problemas, inclusive um relatado por mim sobre segurança.

# pix
Avatar discord do usuario joelemanoel

joelemanoel

Ver Respostas

O mTLS faz sentindo. Ainda mais quando se tem volume de transações, se a sua comunicação com o PSP é segura, não tanta há necessidade de checagem do evento (apesar de ser um item de segurança a mais). A questão toda é que um volume alto de transações iria gerar números altos de Webhook + números altos de checagem de Pix recebido, isso poderia bater no ratelimit do PSP.

# pix
Avatar discord do usuario matheus_efi

matheus_efi

Ver Respostas

Boa tarde <@!671848604625010719> aparentemente é necessário utilizar o GCP Compute em conjunto para configurar o mTLS. Em relação ao google eu encontrei esta documentação https://cloud.google.com/api-gateway/docs?hl=pt-br. Vou te mandar alguns detalhes no privado sobre o mTLS e como funciona.

# pix
Avatar discord do usuario rlucredio

rlucredio

Ver Respostas

Pessoal da GerenciaNet boa tarde tudo bem? Por favor estou configurando o webhook da minha aplicação, gostaria de usar o google cloud functions para isso. Porém pelo que li não tem como fazer o mtls lá, é isso mesmo? Teria que usar o App Compute só pra isso?

# pix
Avatar discord do usuario anoni_mato

anoni_mato

mas veja só.. se eu tiver um subdominio webhook.exemplo.com.br, e cadastrar a raiz dele, eu vou receber os requests em /pix. ese eu tiver que trancar a garagem inteira, não vou poder usar /paypal , /pagseguro, etc. se estiver exigindo o mTLS da GN na raiz

# pix
Avatar discord do usuario anoni_mato

anoni_mato

Ver Respostas

mas eu posso exigir o mTLS em /webhook e não em /webhook/pix

faz sentido que eu faça isso? não. assim como também não faz sentido testar a URL que não é efetiva.

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

O teste é de se todos os caminhos daquele path estão configurados para exigir o mTLS. Então no seu exemplo, seria que o cadeado está na garagem independente dos carros que estão dentro.

# pix
Avatar discord do usuario lucaspera4486

lucaspera4486

URL url = new URL ("https://api-pix.gerencianet.com.br/v2/webhook/" + CHAVE_PIX);
HttpsURLConnection conn = (HttpsURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("PUT");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Authorization", "Bearer =" + authToken);
conn.setRequestProperty("x-skip-mtls-checking", "true");
conn.setSSLSocketFactory(sslsocketfactory);

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Este vídeo dá uma boa idéia:
https://www.youtube.com/watch?v=6Es3i2eH5K4

Mas o mTLS normalmente é implementando no web-server, no PHP só ficam lógicas como checagem de chave Pix.

# pix
Avatar discord do usuario rodriguesrenato61

rodriguesrenato61

Ver Respostas

Nunca fiz autenticação mtls

# pix
Avatar discord do usuario teodoro.rafael

teodoro.rafael

requisições mTLS é difícil de implementar?

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Precisa de algo que possa receber requisições mTLS, quer seja direto no seu sistema quer seja via um API Gateway como o da AWS.