mTLS e certificados da API Pix
Resposta rápida: Além do Bearer token, a API Pix do PSP recebedor exige mTLS: o cliente apresenta o certificado emitido no Internet Banking e precisa confiar na CA privada do banco, que costuma vir dentro do próprio
.pfx.
O que é
Mutual TLS: servidor e cliente autenticam com certificados. São três arquivos em jogo, não dois:
| Arquivo | Papel | Placeholder |
|---|---|---|
| Certificado de cliente | prova quem você é | {{PATH_TO_CERT}} |
| Chave privada | par do certificado | {{PATH_TO_KEY}} |
| CA do banco | prova quem o servidor é | {{PATH_TO_CA}} |
Esquecer o terceiro é o erro mais comum. A cadeia do servidor não é pública, então o cliente HTTP falha no handshake com unable to get local issuer certificate — antes de qualquer HTTP, o que faz o erro parecer problema de credencial.
Quando usar
Em todas as chamadas HTTPS à API, inclusive na emissão do token.
Extrair os três do .pfx
O banco entrega um PKCS#12 protegido por senha. A CA está dentro dele:
openssl pkcs12 -in banco.pfx -clcerts -nokeys -out client.crt
openssl pkcs12 -in banco.pfx -nocerts -nodes -out client.key
openssl pkcs12 -in banco.pfx -cacerts -nokeys -out ca.crt
Homologação e produção são .pfx diferentes, com senhas diferentes e autoridades diferentes — mesmo quando o CN da CA é idêntico nos dois. Comparar o fingerprint evita usar a CA errada:
openssl x509 -in ca.crt -noout -fingerprint -sha256
Provar a cadeia antes de culpar o código
openssl s_client -connect <host-da-api>:443 -CAfile ca.crt </dev/null 2>&1 | grep 'Verify return'
Verify return code: 0 é o único resultado aceitável. Qualquer outro valor significa CA errada ou incompleta.
Regras e limites
- Não commitar chave privada nem
.pfx. - Em ambiente sem arquivo em disco (containers, PaaS), carregue os PEM por variável de ambiente e materialize em diretório temporário com permissão restrita no boot.
- Desligar a verificação TLS "pra funcionar" abre janela de MITM. Se precisar em HML por falta de CA, que seja atrás de flag explícita e nunca em produção.
- Regenerar credenciais pode exigir novo certificado — avise o time.