MTls de Entrada

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?

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.

Hey @victoranalista. I don’t speak Portuguese, so I asked v0 to help answer this. Here’s what it gave me:

Currently, Vercel doesn’t support mTLS (mutual TLS) certificate validation for incoming connections at the platform level. This means you can’t configure Vercel to validate client certificates during the TLS handshake before requests reach your application code.

For your Banco do Brasil webhook scenario, you have a few alternatives:

  1. Use a reverse proxy service like Cloudflare or AWS CloudFront that supports mTLS validation, then forward validated requests to your Vercel deployment.

  2. Deploy to Vercel’s Enterprise plan and check if they can provide custom infrastructure solutions for your specific use case.

  3. Consider using a different hosting platform that supports mTLS validation for this specific webhook endpoint, while keeping the rest of your application on Vercel.

  4. Implement certificate validation in your application code - though this won’t work for true mTLS since the TLS handshake happens before your code runs.

I’d recommend reaching out to Vercel’s sales team to discuss Enterprise options or potential custom solutions for your banking integration requirements.

I hope that helps!

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.