Receber Webhook e necessita de MTLS

Olá, a vercel tem previsão de aceitar comunicação via MTLS.

Preciso receber webhook e o banco precisa validar meu certificado e comparar.

Para receber o payload de retorno via webhook ele precisa fazer essa autenticação MTLS.

Vocês tem previsão de aceitar esse tipo de comunicação?

Hey @victoranalista! I understand that you’re looking into whether Vercel supports mTLS i.e. a way for users to verify that their requests into their external hosting/server are coming from Vercel. This isn’t currently supported, however, it is something our Product team is looking into. While I am not able to confirm an ETA for when this’ll be ready, I would recommend keeping an eye out in our changelog (or within Topics tagged changelog) for relevant updates :saluting_face:

1 Like

@victoranalista in the meantime, it’d be incredibly helpful if you’re able to share whether you’re looking to receive (i.e. validate that the incoming connection has a valid mTLS certificate with the Firewall) OR if you’re looking to be able to attach mTLS certificates on outgoing connections?

Any context or info you can provide on this matter will help our Product team on their development/research process :slight_smile: Thank you!

1 Like

Preciso validar um cenário de webhook mTLS onde o Banco do Brasil (PagBB) envia requisições HTTPS autenticadas para minha aplicação hospedada na Vercel.

Conforme a documentação do BB, o webhook deles só é enviado mediante uma conexão mTLS, ou seja:

  • O cliente (BB) deve apresentar um certificado mTLS válido ao conectar

  • O servidor (Vercel) deve aceitar e validar esse certificado

  • Só então o BB entrega o webhook (por exemplo: atualização de status de lote PIX)

:pushpin: O que exatamente eu preciso?

Eu preciso que:

  1. A Vercel aceite conexões HTTPS de entrada que utilizam mTLS (mutual TLS).

  2. Ou seja, eu preciso validar o certificado apresentado pelo Banco do Brasil na conexão de ENTRADA.

  3. Não preciso anexar certificados em chamadas de saída — nesse fluxo, sou o servidor, não o cliente.

:pushpin: Contexto técnico completo

O fluxo do PagBB é:

  1. Eu cadastro na API PagBB um endpoint HTTPS público para receber os webhooks.

  2. O Banco do Brasil realiza a entrega dos eventos via POST.

  3. Essa entrega é feita obrigatoriamente via mTLS, o que significa:

    • A conexão TLS é iniciada pelo BB.

    • O BB envia seu client certificate assinado pela autoridade do BB.

    • O servidor deve validar esse certificado na handshake TLS.

:pushpin: Requisito técnico chave

Para que isso funcione, preciso que minha aplicação hospedada na Vercel permita:

  • Configurar validação de client certificates na camada de entrada

  • Ter acesso ao certificate chain enviado pelo cliente

  • Possuir uma forma de validar ou confiar na CA do Banco do Brasil

  • Manter a mesma URL pública HTTPS já hospedada na Vercel

Ou seja, o que preciso é:

“Aceitar conexões de entrada com mTLS e validar o certificado do cliente (BB)”

:pushpin: O que NÃO preciso

Não preciso anexar certificados a requisições de saída.
Não preciso que minha aplicação seja cliente mTLS neste fluxo.
Não preciso de outbound mTLS.

:pushpin: Fluxo esperado (resumido)

  1. BB → envia POST para minha URL pública (na Vercel).

  2. BB → apresenta seu certificado cliente durante o handshake.

  3. Vercel → valida o certificado com base em uma CA que eu configurarei.

  4. Se válido → a request chega ao meu código (/api/bb/webhook).

  5. Se inválido → conexão rejeitada antes de chegar ao meu app.

:pushpin: Em termos da pergunta de vocês:

:red_question_mark: “Deseja receber (validar certificado mTLS de entrada) ou deseja anexar certificados mTLS em conexões de saída?”

:check_mark: Resposta:
Quero receber e validar certificados mTLS de entrada.
Não preciso anexar certificados em conexões de saída.

Hello,

I am needing to do the the exact same thing for an app already deployed in production. Bradesco bank requires this for webhook activation. Just curious if there is any update on if this ability is coming to vercel.