bacen / pix-api

API Pix: a API do Arranjo de Pagamentos Instantâneos Brasileiro, Pix, criado pelo Banco Central do Brasil.
https://bacen.github.io/pix-api
2.36k stars 268 forks source link

Duvidas sobre configurar WebHook #313

Open jeancarlosc39 opened 3 years ago

jeancarlosc39 commented 3 years ago

Estou lendo a documentação agora surgiu algumas duvidas. Fiz toda implementação, criei os certificado e validei. Agora sobre o webhook já passei minha URL de retorno mas não entendi esta parte. Para ativar o fluxo de autenticação via mTLS primeiramente é necessário baixar a CA (chave pública) do Itaú no seguinte link https://developer.itau.com.br/docs/ca-cert.zip. Após isso, essa CA deverá ser importada no API Gateway, servidor Proxy ou Aplicação que irá receber a requisição de Webhook. Pelo que vi eles passaram este certificado que o nosso servidor deve se comunicar com eles. Para funcionar então este webhook teria então só que instalar este certificado via servidor que vai se comunicar normalmente? Ou tenho algum outro código para implementar? Pelo que olhei o manual só aguardo o recebimento do pagamento ou devolução no webhook.

rubenskuhl commented 3 years ago

Você precisa também: 1) Da informação de qual Common Name tem o certificado cliente que o Itaú vai usar, para comparar e rejeitar sistemas que não o autorizado 2) Checar a chave Pix para a qual está indo o Pix, para evitar acionamento indevido por outro EC também cliente do Itaú 3) Configurar o certificado que o Itaú exigir para mostrar do lado de vocês, conforme instruções deles para que eles validem que você é você mesmo. Pode ser um certificado da CA do Itaú ou um certificado de CA reconhecida, conforme o que eles especificarem.

tiagostutz commented 3 years ago
3. Configurar o certificado que o Itaú exigir para mostrar do lado de vocês, conforme instruções deles para que eles validem que você é você mesmo. Pode ser um certificado da CA do Itaú ou um certificado de CA reconhecida, conforme o que eles especificarem.

Poderia ser um certificado autoassinado do cliente, já que ele vai enviar esse certificado para o Banco num ambiente autenticado?

rubenskuhl commented 3 years ago
3. Configurar o certificado que o Itaú exigir para mostrar do lado de vocês, conforme instruções deles para que eles validem que você é você mesmo. Pode ser um certificado da CA do Itaú ou um certificado de CA reconhecida, conforme o que eles especificarem.

Poderia ser um certificado autoassinado do cliente, já que ele vai enviar esse certificado para o Banco num ambiente autenticado?

Não, o manual de segurança do Pix veda especificamente essa possibilidade.

tiagostutz commented 3 years ago
3. Configurar o certificado que o Itaú exigir para mostrar do lado de vocês, conforme instruções deles para que eles validem que você é você mesmo. Pode ser um certificado da CA do Itaú ou um certificado de CA reconhecida, conforme o que eles especificarem.

Poderia ser um certificado autoassinado do cliente, já que ele vai enviar esse certificado para o Banco num ambiente autenticado?

Não, o manual de segurança do Pix veda especificamente essa possibilidade.

Certo, obrigado pela resposta. Eu estava consultando o manual v3.1 e não achei essa informação lá. Essa é a última versão mesmo ou já tem alguma mais atualizada? Googlei aqui e não encontrei.

rubenskuhl commented 3 years ago
3. Configurar o certificado que o Itaú exigir para mostrar do lado de vocês, conforme instruções deles para que eles validem que você é você mesmo. Pode ser um certificado da CA do Itaú ou um certificado de CA reconhecida, conforme o que eles especificarem.

Poderia ser um certificado autoassinado do cliente, já que ele vai enviar esse certificado para o Banco num ambiente autenticado?

Não, o manual de segurança do Pix veda especificamente essa possibilidade.

Certo, obrigado pela resposta. Eu estava consultando o manual v3.1 e não achei essa informação lá. Essa é a última versão mesmo ou já tem alguma mais atualizada? Googlei aqui e não encontrei.

A última versão é a 3.2: https://www.bcb.gov.br/content/estabilidadefinanceira/cedsfn/Manual%20de%20Seguranca%20do%20PIX%20v3.2.pdf

Mas de fato isso está em outro documento: https://www.bcb.gov.br/content/estabilidadefinanceira/pix/Regulamento_Pix/II-ManualdePadroesparaIniciacaodoPix.pdf

Os certificados digitais dos clientes da API poderão ser emitidos pelo próprio PSP ou por ACs externas, conforme definido por cada PSP. Não deverão ser aceitos certificados auto-assinados pelo cliente.

rubenskuhl commented 3 years ago

Em tempo: esse é um dos motivos inclusive de Itaú e Bradesco estarem listados em #76 como não obedecendo à API padrão, em contravenção ao regulamento.

tiagostutz commented 3 years ago

Perfeito, @rubenskuhl ! Muito obrigado pela resposta e pelas referências.

jeancarlosc39 commented 3 years ago

Continuando preciso alterar minha url de recebimento do webhook mas não esta funcionando a adição de uma outra URL. Estranho que faço as consultas dos webhooks cadstrados e me retorna nulo. Estou usando o Itau [webHookConsulta] => Array ( [parametros] => Array ( [inicio] => 2020-01-01T16:01:35Z [fim] => 2021-10-23T16:01:35Z [paginacao] => Array ( [paginaAtual] => 0 [itensPorPagina] => 100 [quantidadeDePaginas] => 1 [quantidadeTotalDeItens] => 0 )

            )

        [webhooks] => Array
            (
            )

        [webHookConsultaStatus] => 200
    )
rubenskuhl commented 3 years ago

Continuando preciso alterar minha url de recebimento do webhook mas não esta funcionando a adição de uma outra URL. Estranho que faço as consultas dos webhooks cadstrados e me retorna nulo. Estou usando o Itau [webHookConsulta] => Array ( [parametros] => Array ( [inicio] => 2020-01-01T16:01:35Z [fim] => 2021-10-23T16:01:35Z [paginacao] => Array ( [paginaAtual] => 0 [itensPorPagina] => 100 [quantidadeDePaginas] => 1 [quantidadeTotalDeItens] => 0 )

            )

        [webhooks] => Array
            (
            )

        [webHookConsultaStatus] => 200
    )

Ao que eu lembre é apenas uma URL por chave mesmo. E a consulta do Itaú está bugada, eles precisam consertar. (Junto com as demais falhas e discrepâncias do padrão...)

jeancarlosc39 commented 3 years ago

Estava tentando cadastrar mas vi que não funciona mesmo.

ninrod commented 3 years ago

Em tempo: esse é um dos motivos inclusive de Itaú e Bradesco estarem listados em #76 como não obedecendo à API padrão, em contravenção ao regulamento.

Obrigado pelo reporte @rubenskuhl. Vou acionar o DECEM para averiguar a situação.

NatalicioNasciment commented 3 years ago

Pessoal vi que essa parte de implementação do webhook itau pela documentação ficou muito em aberto . Eles fornecem o certificado https://developer.itau.com.br/docs/ca-cert.zip, mas não foram muito especificos em como implementar. Alguém conseguiu implementar 100%, recebendo as notificações de cobrança e quando elas foram concluidas?

tiagostutz commented 3 years ago

@NatalicioNasciment eu não conheço a solução do Itaú (sou da TI do Banco do Brasil), mas imagino que você vá configurar a URL do seu webhook fazendo uma chamada PUT na API do PIX passando a URL do webhook para a chave PIX correspondente, seguindo essa spec: https://openpix.com.br/api/API-PIX-2-0-0.html#tag/Webhook/paths/~1webhook/put

E o endpoint correspondente a essa URL que você vai enviar deve estar configurado para receber requisições via mTLS (nesse caso como server). Algumas referências/recursos que podem ajudar:

cleytongama commented 3 years ago

Olá pessoal, realmente a documentação da api do PIx ITAÚ não é muito clara. Fiz a mesma implementação do webhook ApiGateway + lambda com a api do gerencia Net. E funcionou. No caso da API do gerencia Net eles disponibilizam uma chave .crt

Na doc do ITAÚ eles disponibilizam duas nesse zip https://developer.itau.com.br/docs/ca-cert.zip

Vcs sabem qual adiciona no S3.? Ou como configura no API Gateway essas duas chaves. Fiz as configurações mas não recebo o callbak do WebHook

EvertonSA commented 2 years ago

Nós implementamos mTLS webhook itau com sucesso, nunca tivemos problemas. Transacionamos e recebemos callback.

basta instalar a CA na cabeça do seu gateway e validar o certificado usado na requisição. dai pra frente se falhar é falha na sua aplicação. não tem segredo.

edit: não adianta achar que com LB L7 vai funcionar. não funciona. tem que ser L4.

vandersondiniz1 commented 2 years ago

@NatalicioNasciment, você conseguiu configurar (itau)?

vandersondiniz1 commented 2 years ago

@EvertonSA, essa é minha atual configuração no httpd:

<VirtualHost xxx.xx.xx.xxx:443>
    Header set Access-Control-Allow-Origin *
    Header set Access-Control-Allow-Methods POST,GET,DELETE,PUT,OPTIONS
    Header set Access-Control-Allow-Headers X-Authorization,X-Requested-With

    SSLEngine on
    SSLCertificateFile /home/user/itau-cert/cert.crt
    SSLCertificateKeyFile /home/user/itau-cert/private.key
    SSLCertificateChainFile /home/user/itau-cert/ca.cer
</VirtualHost>

Se eu usar o "ca-cert.cer" e "CARoot.crt", fornecidos pelo itau, num desses caminhos, dá erro de configuração. Os arquivos configurados nos caminhos acima, foram gerados no servidor. Definitivamente, onde devo colocar estes arquivos acima? Poderia descrever com maiores detalhes como você fez?

cleytongamazup commented 2 years ago

@vandersondiniz1 tudo bem ? Esse é o problema e que a documentação não deixava tão claro (nao sei como ta hj).

Essas chaves devem ser unificadas em um arquivo único "ca-cert.cer" + "CARoot.crt" = novoarquivo.crt

Ai com esse novo arquivo deveria funcionar. Para o meu cenário funcionou

vandersondiniz1 commented 2 years ago

@cleytongamazup , opa, tudo ótimo! Vamos lá, vou ver o que consigo por aqui. Essa sua mensagem já será um avanço.

cleytongama commented 2 years ago

Opa @vandersondiniz1 no meu cenário fiz isso e funcionou. Já uso a api do PIX do Itaú em produção

rubenskuhl commented 2 years ago

@NatalicioNasciment eu não conheço a solução do Itaú (sou da TI do Banco do Brasil), mas imagino que você vá configurar a URL do seu webhook fazendo uma chamada PUT na API do PIX passando a URL do webhook para a chave PIX correspondente, seguindo essa spec: https://openpix.com.br/api/API-PIX-2-0-0.html#tag/Webhook/paths/~1webhook/put

E o endpoint correspondente a essa URL que você vai enviar deve estar configurado para receber requisições via mTLS (nesse caso como server). Algumas referências/recursos que podem ajudar:

O BB vai passar a operar com mTLS e seguir o padrão BACEN ?

tiagojosebogoni commented 2 years ago

Boa noite @vandersondiniz1 , conseguiu implementar? gostaria de saber o que fez com os dois arquivos baixados no itau( ca-cert.cer e ca-cert.cer)

vandersondiniz1 commented 2 years ago

Olá @tiagojosebogoni , boa noite! Ainda não. Prosseguimos com uma outra API semelhante aqui e deu certo. Acho que retomaremos essa questão amanhã. Quando conseguirmos solucionar, eu passo aqui para dizer a solução.

tiagojosebogoni commented 2 years ago

Olá alguem coseguiu implementar? @vandersondiniz1, @cleytongamazup

cleytongama commented 2 years ago

Olá alguem coseguiu implementar? @vandersondiniz1, @cleytongamazup

Olá Tiago, consegui sim . Como comentei mais acima , o problema no meu caso era unificar as duas chaves que eles enviaram. E criar um único PEM.

cleytongama commented 2 years ago

@vandersondiniz1 tudo bem ? Esse é o problema e que a documentação não deixava tão claro (nao sei como ta hj).

Essas chaves devem ser unificadas em um arquivo único "ca-cert.cer" + "CARoot.crt" = novoarquivo.crt

Ai com esse novo arquivo deveria funcionar. Para o meu cenário funcionou

@tiagojosebogoni

erichelfenstens commented 2 years ago

Olá pessoal,

Estou com problemas para conseguir fazer funcionar a chamada de webhook do Itaú para minha aplicação. Meu cenário possui o IIS 10, foi difícil encontrar um exemplo de como configurar o IIS para uso do mTLS e o único caso foi um vídeo onde é feita integração com a gerencianet, tentei aplicar o conceito no meu caso com Itaú mas sem sucesso, a chamada a minha url não acontece.

Alguém aí conseguiu com Itaú, usando o IIS?

amarborto commented 2 years ago

@erichelfenstens fiz porém foi com Linux amigo. Boa sorte.

rubenskuhl commented 2 years ago

Olá pessoal,

Estou com problemas para conseguir fazer funcionar a chamada de webhook do Itaú para minha aplicação. Meu cenário possui o IIS 10, foi difícil encontrar um exemplo de como configurar o IIS para uso do mTLS e o único caso foi um vídeo onde é feita integração com a gerencianet, tentei aplicar o conceito no meu caso com Itaú mas sem sucesso, a chamada a minha url não acontece.

Alguém aí conseguiu com Itaú, usando o IIS?

Não sei se o @renatofrota testou o mtls.pix.ae com o Itaú, mas se quiser tentar:



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/```
renatofrota commented 2 years ago

Funcional apenas com a Gerencianet no momento, mas se o amigo quiser eu posso adicionar suporte ao Itaú, o que será possível gratuitamente se o certificado cliente for de uso geral, como na GN. Se o certificado for individual por cliente, o serviço de intermediação da notificação pode ser conversado, como um serviço pago.

Em ambos os casos, meu e-mail é meu usuario aqui, no gmail, ou pode usar o email divulgado no pix.ae.

Em seg, 4 de abr de 2022 19:13, Rubens Kuhl @.***> escreveu:

Olá pessoal,

Estou com problemas para conseguir fazer funcionar a chamada de webhook do Itaú para minha aplicação. Meu cenário possui o IIS 10, foi difícil encontrar um exemplo de como configurar o IIS para uso do mTLS e o único caso foi um vídeo onde é feita integração com a gerencianet, tentei aplicar o conceito no meu caso com Itaú mas sem sucesso, a chamada a minha url não acontece.

Alguém aí conseguiu com Itaú, usando o IIS?

Não sei se o @renatofrota https://github.com/renatofrota testou o mtls.pix.ae com o Itaú, mas se quiser tentar:

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/``` http://mtls-h.pix.ae/

— Reply to this email directly, view it on GitHub https://github.com/bacen/pix-api/issues/313#issuecomment-1088064083, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAZ2XSWRXTFHHDDJPYJA6XLVDNSQVANCNFSM4XIZUDMQ . You are receiving this because you were mentioned.Message ID: @.***>

erichelfenstens commented 2 years ago

@erichelfenstens fiz porém foi com Linux amigo. Boa sorte.

@amarborto vc usou containers? se sim qual arquitetura montou? Obrigado.

@rubenskuhl e @renatofrota muito obrigado pela ajuda. Entrarei em contato por e-mail.

Funcional apenas com a Gerencianet no momento, mas se o amigo quiser eu posso adicionar suporte ao Itaú, o que será possível gratuitamente se o certificado cliente for de uso geral, como na GN. Se o certificado for individual por cliente, o serviço de intermediação da notificação pode ser conversado, como um serviço pago. Em ambos os casos, meu e-mail é meu usuario aqui, no gmail, ou pode usar o email divulgado no pix.ae. Em seg, 4 de abr de 2022 19:13, Rubens Kuhl @.> escreveu: Olá pessoal, Estou com problemas para conseguir fazer funcionar a chamada de webhook do Itaú para minha aplicação. Meu cenário possui o IIS 10, foi difícil encontrar um exemplo de como configurar o IIS para uso do mTLS e o único caso foi um vídeo onde é feita integração com a gerencianet, tentei aplicar o conceito no meu caso com Itaú mas sem sucesso, a chamada a minha url não acontece. Alguém aí conseguiu com Itaú, usando o IIS? Não sei se o @renatofrota https://github.com/renatofrota testou o mtls.pix.ae com o Itaú, mas se quiser tentar: 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/``` http://mtls-h.pix.ae/ — Reply to this email directly, view it on GitHub <#313 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAZ2XSWRXTFHHDDJPYJA6XLVDNSQVANCNFSM4XIZUDMQ . You are receiving this because you were mentioned.Message ID: @.>

amarborto commented 2 years ago

@erichelfenstens não usei containers não, usei um server só pra isso com nodejs e o apache na frente pra receber as requisições

erichelfenstens commented 2 years ago

@amarborto ok obrigado.

Talvez minha maior dúvida aqui seja em saber com qual certificado o Itaú chamaria meu webhook. Eu entendo que seria o mesmo gerado por eles ( que eu uso para consumir as APIs), mas não tenho certeza, então não sei se estou fazendo alguma configuração errada para uso desse certificado no IIS ou de fato seria outro certificado, o que mudaria a forma de configuração.

Até pensei em montar um nginx pra meu webhook, mas se eu não compreender exatamente quais certificados estão envolvidos acredito que de nada adiantaria, seria apenas um trabalho extra, nesse momento.

rubenskuhl commented 2 years ago

@amarborto ok obrigado.

Talvez minha maior dúvida aqui seja em saber com qual certificado o Itaú chamaria meu webhook. Eu entendo que seria o mesmo gerado por eles ( que eu uso para consumir as APIs), mas não tenho certeza, então não sei se estou fazendo alguma configuração errada para uso desse certificado no IIS ou de fato seria outro certificado, o que mudaria a forma de configuração.

Até pensei em montar um nginx pra meu webhook, mas se eu não compreender exatamente quais certificados estão envolvidos acredito que de nada adiantaria, seria apenas um trabalho extra, nesse momento.

O que você poderia fazer é usar o s_server do OpenSSL em modo debug justamente para entender o que o Itaú está tentando apresentar como client-certificate e o que ele espera como server-certificate. Aí depois que acertar isso, configurar um nginx.

amarborto commented 2 years ago

@erichelfenstens entendo, infelizmente com o IIS não serei de grande ajuda pra você, quanto ao certificado você deve usar esse que o itau fornece em https://developer.itau.com.br/docs/ca-cert.zip é só combiná-los em um único arquivo como

@vandersondiniz1 tudo bem ? Esse é o problema e que a documentação não deixava tão claro (nao sei como ta hj).

Essas chaves devem ser unificadas em um arquivo único "ca-cert.cer" + "CARoot.crt" = novoarquivo.crt

Ai com esse novo arquivo deveria funcionar. Para o meu cenário funcionou

no meu caso no apache fica assim:

<IfModule mod_ssl.c>
 <VirtualHost *:443>

      #.....Outras config acima

       ProxyRequests on
       ProxyPreserveHost on
       <Location />
                ProxyPass http://localhost:8000/
                ProxyPassReverse http://localhost:8000/
       </Location>

        SSLVerifyClient none               #Não requer cert fora da rota obrigatória
        SSLProtocol -all +TLSv1.2       #Se a sua instalação for nova isso é IMPORTANTE pq o apache 2.4 vem com o tls 1.3 por padrão e o itau não funciona com 1.3 somente com 1.2
        <Location /webhook>
                SSLVerifyClient require  #Sobescreve a regra anterior exigindo certificado nesta rota
                SSLVerifyDepth 4           #Não é necessário mais que 3 a não ser que vc saiba oque esta fazendo
        </Location>

SSLCertificateFile /caminho/do/cert/fullchain.pem
SSLCertificateKeyFile /caminho/do/cert/privkey.pem
#Certificado do ITAU fornecido em https://developer.itau.com.br/docs/ca-cert.zip
SSLCACertificateFile /caminho/do/cert/pix-itauCABundle.pem

 </VirtualHost>
</IfModule>

Fiz alguns comentários caso alguém ache útil

erichelfenstens commented 2 years ago

O que você poderia fazer é usar o s_server do OpenSSL em modo debug justamente para entender o que o Itaú está tentando apresentar como client-certificate e o que ele espera como server-certificate. Aí depois que acertar isso, configurar um nginx.

@rubenskuhl estou olhando a documentação do openssl, confesso que não tenho experiência com isso, mas a ideia seria rodar o openssl para ficar escutando a porta 443, para quando o itaú tentar chamar o webhook, eu conseguir verificar os certificados?

@amarborto eu havia lido que o pessoal combinou o arquivo em um só, no caso eu combinei em um .crt (que nada mais é do que os 2 certificados dentro de um arquivo, separados por BEGIN/END CERTIFICATE), quando instalei ele continua sendo 2 certificados separados, mas como é IIS acredito nem ser esse o problema. Sobre a combinação em um arquivo .pem creio que não consiga utilizar no IIS, talvez se eu fosse para o apache ou até mesmo algum proxy reverso, aí sim.

amarborto commented 2 years ago

O que você poderia fazer é usar o s_server do OpenSSL em modo debug justamente para entender o que o Itaú está tentando apresentar como client-certificate e o que ele espera como server-certificate. Aí depois que acertar isso, configurar um nginx.

@rubenskuhl estou olhando a documentação do openssl, confesso que não tenho experiência com isso, mas a ideia seria rodar o openssl para ficar escutando a porta 443, para quando o itaú tentar chamar o webhook, eu conseguir verificar os certificados?

@amarborto eu havia lido que o pessoal combinou o arquivo em um só, no caso eu combinei em um .crt (que nada mais é do que os 2 certificados dentro de um arquivo, separados por BEGIN/END CERTIFICATE), quando instalei ele continua sendo 2 certificados separados, mas como é IIS acredito nem ser esse o problema. Sobre a combinação em um arquivo .pem creio que não consiga utilizar no IIS, talvez se eu fosse para o apache ou até mesmo algum proxy reverso, aí sim.

@erichelfenstens entendo, quanto a extensão do arquivo não é relevante, pelo menos no linux não sei em windows server, mas é isso mesmo primeiro o certificado intermediário seguido do ca-root.

Caso mude para apache no linux poste aqui novamente ou entre em contato, meu email esta no perfil.

rubenskuhl commented 2 years ago

O que você poderia fazer é usar o s_server do OpenSSL em modo debug justamente para entender o que o Itaú está tentando apresentar como client-certificate e o que ele espera como server-certificate. Aí depois que acertar isso, configurar um nginx.

@rubenskuhl estou olhando a documentação do openssl, confesso que não tenho experiência com isso, mas a ideia seria rodar o openssl para ficar escutando a porta 443, para quando o itaú tentar chamar o webhook, eu conseguir verificar os certificados?

Isso mesmo.

erichelfenstens commented 2 years ago

@erichelfenstens entendo, quanto a extensão do arquivo não é relevante, pelo menos no linux não sei em windows server, mas é isso mesmo primeiro o certificado intermediário seguido do ca-root.

Caso mude para apache no linux poste aqui novamente ou entre em contato, meu email esta no perfil.

@amarborto ok, obrigado pela disposição em ajudar!

Isso mesmo.

@rubenskuhl é bom saber dessa possibilidade, no entanto, eu consegui configurar o IIS para não olhar para um certificado client em específico (OneToOneMappings) já que eu não sabia qual era, e então configurei o ManyToOneMappings com algumas Rules para olhar para algumas propriedades do certificado, como o CN do Issuer (mesmo do meu certificado que uso para consumir a API) e deu certo! Obs: os 2 certificados CA disponibilizados pelo Itaú foram instalados no servidor.

webhook funcionando no IIS! Obrigado a todos que interagiram.

afraniollucas commented 2 years ago

Boa tarde, alguem conseguei baixar os certificados no link https://developer.itau.com.br/docs/ca-cert.zip? Parece que está quebrado!

amarborto commented 2 years ago

Boa tarde, alguem conseguei baixar os certificados no link https://developer.itau.com.br/docs/ca-cert.zip? Parece que está quebrado!

@afraniollucas o Itaú mudou algumas coisas do portal do desenvolvedor, o link continua o mesmo para download aparentemente só esta quebrado mesmo, fale com o atendente de cash.

giacomeli commented 2 years ago

Estou lendo a documentação agora surgiu algumas duvidas. Fiz toda implementação, criei os certificado e validei. Agora sobre o webhook já passei minha URL de retorno mas não entendi esta parte. Para ativar o fluxo de autenticação via mTLS primeiramente é necessário baixar a CA (chave pública) do Itaú no seguinte link https://developer.itau.com.br/docs/ca-cert.zip. Após isso, essa CA deverá ser importada no API Gateway, servidor Proxy ou Aplicação que irá receber a requisição de Webhook. Pelo que vi eles passaram este certificado que o nosso servidor deve se comunicar com eles. Para funcionar então este webhook teria então só que instalar este certificado via servidor que vai se comunicar normalmente? Ou tenho algum outro código para implementar? Pelo que olhei o manual só aguardo o recebimento do pagamento ou devolução no webhook.

@amarborto ok obrigado.

Talvez minha maior dúvida aqui seja em saber com qual certificado o Itaú chamaria meu webhook. Eu entendo que seria o mesmo gerado por eles ( que eu uso para consumir as APIs), mas não tenho certeza, então não sei se estou fazendo alguma configuração errada para uso desse certificado no IIS ou de fato seria outro certificado, o que mudaria a forma de configuração.

Até pensei em montar um nginx pra meu webhook, mas se eu não compreender exatamente quais certificados estão envolvidos acredito que de nada adiantaria, seria apenas um trabalho extra, nesse momento.

Fala pessoal, estou com dificuldades em implementar esse webhook também, tenho um servidor com nginx configurado, alguém pode me dar uma luz sobre essa implementação dos certificados CA no nginx?

rubenskuhl commented 2 years ago

Estou lendo a documentação agora surgiu algumas duvidas. Fiz toda implementação, criei os certificado e validei. Agora sobre o webhook já passei minha URL de retorno mas não entendi esta parte. Para ativar o fluxo de autenticação via mTLS primeiramente é necessário baixar a CA (chave pública) do Itaú no seguinte link https://developer.itau.com.br/docs/ca-cert.zip. Após isso, essa CA deverá ser importada no API Gateway, servidor Proxy ou Aplicação que irá receber a requisição de Webhook. Pelo que vi eles passaram este certificado que o nosso servidor deve se comunicar com eles. Para funcionar então este webhook teria então só que instalar este certificado via servidor que vai se comunicar normalmente? Ou tenho algum outro código para implementar? Pelo que olhei o manual só aguardo o recebimento do pagamento ou devolução no webhook.

@amarborto ok obrigado. Talvez minha maior dúvida aqui seja em saber com qual certificado o Itaú chamaria meu webhook. Eu entendo que seria o mesmo gerado por eles ( que eu uso para consumir as APIs), mas não tenho certeza, então não sei se estou fazendo alguma configuração errada para uso desse certificado no IIS ou de fato seria outro certificado, o que mudaria a forma de configuração. Até pensei em montar um nginx pra meu webhook, mas se eu não compreender exatamente quais certificados estão envolvidos acredito que de nada adiantaria, seria apenas um trabalho extra, nesse momento.

Fala pessoal, estou com dificuldades em implementar esse webhook também, tenho um servidor com nginx configurado, alguém pode me dar uma luz sobre essa implementação dos certificados CA no nginx?

Você se referia especificamente ao Itaú ou a PSPs Pix em geral ? Mesmo que o PSP não seja a Gerencianet, esta tem um exemplo de configuração de diversos web servers, um deles o nginx, para o modelo adotado por eles, que pode servir de inspiração para modelos ligeiramente diferentes: https://dev.gerencianet.com.br/docs/api-pix-endpoints#section-exemplos-de-configura-es-de-servidor

nezzzumi commented 2 years ago

Fala pessoal, estou com dificuldades em implementar esse webhook também, tenho um servidor com nginx configurado, alguém pode me dar uma luz sobre essa implementação dos certificados CA no nginx?

Opa, @giacomeli.

Para fazer a configuração do certificado no NGINX eu precisei juntar os dois certificados disponibilizados pelo Itaú.

obs: no meu caso adicionei o protocolo mTLS apenas nas rotas do webhook.

Para juntar os dois certificados:

cat "ca-cert" "CARoot (1).crt" > itau.crt

Nas configurações do NGINX, na parte do server eu adicionei as seguintes opções:

ssl_client_certificate /caminho/do/certificado/itau.crt;
ssl_verify_client optional;

# Webhook Itaú mTLS
location /webhook/ {
    if ($ssl_client_verify != SUCCESS){
        return 403;
    }

    proxy_pass http://localhost/webhook/;
}

Para verificar se está tudo ok você pode tentar fazer um request para o seu serviço utilizando o mesmo certificado e chave que utiliza para acessar a API do Itaú. Se tudo estiver ok, você irá conseguir acessar.

LeandroWill commented 1 year ago

Bom dia pessoal, o suporte do Itaú nos falou que para instalar o certificado no apache tomcat só precisava do CARoot.crt, mas a própria doc do tomcat fala que precisa do .key e nos arquivos do Itaú só tem o .crt e .cer. Vocês saberiam como fazer o mTls funcionar no tomcat só com o .crt? Tentamos fazer colocando o CARoot dentro de um .jks mas ele da um erro pedindo a key também.

Aqui a configuração do tomcat que tentamos usar mas não deu certo: Screenshot_7

Não sei mais o que fazer... Desde já agradeço !

rubenskuhl commented 1 year ago

Bom dia pessoal, o suporte do Itaú nos falou que para instalar o certificado no apache tomcat só precisava do CARoot.crt, mas a própria doc do tomcat fala que precisa do .key e nos arquivos do Itaú só tem o .crt e .cer. Vocês saberiam como fazer o mTls funcionar no tomcat só com o .crt? Tentamos fazer colocando o CARoot dentro de um .jks mas ele da um erro pedindo a key também.

Aqui a configuração do tomcat que tentamos usar mas não deu certo: Screenshot_7

Não sei mais o que fazer... Desde já agradeço !

Se é um certificado raiz não precisa do .key, pq só precisa da chave pública... mas se é um certificado individual, por exemplo o que diz que você é o correntista XYZ, aí precisa do .key. Não sei o procedimento específico do Itaú, mas o procedimento usual de certificação digital é: 1) Você gera uma chave privada (a que vai no .key), a chave pública correspondente e põe só a chave pública num .req (certificate request) 2) Você envia o certificate request para quem possa dizer que você é você (neste caso, o Itaú) 3) A autoridade certificadora devolve um .crt ou .cer (certificate) que é sua chave pública assinada pela chave da certificadora 4) Você instala o certificado seu e certificados raiz da certificadora que permitem provar toda a cadeia de certificação

MuriloFPC commented 10 months ago

#

@vandersondiniz1 tudo bem ? Esse é o problema e que a documentação não deixava tão claro (nao sei como ta hj).

Essas chaves devem ser unificadas em um arquivo único "ca-cert.cer" + "CARoot.crt" = novoarquivo.crt

Ai com esse novo arquivo deveria funcionar. Para o meu cenário funcionou

Para quem vai usar o API Gateway da AWS, isso funciona, caso ainda não esteja recebendo, verifica o endpoint que está configurado no Itaú, como está na documentação deles, eles colocam um /pix no final. Depois que eu criei esse caminho no gateway com os certificados, eu comecei a receber as chamadas.

MHtecJairVieira commented 8 months ago

@erichelfenstens entendo, quanto a extensão do arquivo não é relevante, pelo menos no linux não sei em windows server, mas é isso mesmo primeiro o certificado intermediário seguido do ca-root. Caso mude para apache no linux poste aqui novamente ou entre em contato, meu email esta no perfil.

@amarborto ok, obrigado pela disposição em ajudar!

Isso mesmo.

@rubenskuhl é bom saber dessa possibilidade, no entanto, eu consegui configurar o IIS para não olhar para um certificado client em específico (OneToOneMappings) já que eu não sabia qual era, e então configurei o ManyToOneMappings com algumas Rules para olhar para algumas propriedades do certificado, como o CN do Issuer (mesmo do meu certificado que uso para consumir a API) e deu certo! Obs: os 2 certificados CA disponibilizados pelo Itaú foram instalados no servidor.

webhook funcionando no IIS! Obrigado a todos que interagiram.

Olá @erichelfenstens , conseguiria me passar um exemplo de como você fez essa configuração no IIS? Estou passando pelo mesmo problema onde o webhook está registrado, porém não funciona.

Obrigado

jaoassis commented 8 months ago

@MuriloFPC , você apenas configurou um "/pix" no final do endpoint e funcionou? Aqui não consegui receber nada ainda deles, mesmo usando o /pix no final. Alguma outra configuração foi necessária?

rohilario commented 8 months ago

@jaoassis

@MuriloFPC , você apenas configurou um "/pix" no final do endpoint e funcionou? Aqui não consegui receber nada ainda deles, mesmo usando o /pix no final. Alguma outra configuração foi necessária?

Man, consegui transacionar e receber as callbacks aqui. Também coloquei minha url com /pix e deu bom. Para o itaú, voce manda sem o /pix, porque eles pegam sua URL e concatenam lá na hora de fazer a callback.

Além disso, sobre o certificado, fiz como o pessoal falou ai acima, juntei os dois em um arquivo só em um .CRT e importar

Para importar: Linux:

/home/bdoserver/java/bin/keytool -import -trustcacerts -keystore /home/bdoserver/java/jre/lib/security/cacerts -storepass changeit -alias itau -file itau.crt
Windows: C:\bdoserver\java\bin\keytool -import -trustcacerts -keystore C:\bdoserver\java\jre\lib\security\cacerts -storepass changeit -alias itau -file itau.crt

Validando se a importacao ocorreu com sucesso: Linux:

/home/bdoserver/java/bin/keytool -import -trustcacerts -keystore /home/bdoserver/java/jre/lib/security/cacerts -storepass changeit -alias itau -file itau.crt

Windows:

keytool -v -list -alias itau -keystore C:\bdoserver\java\jre\lib\security\cacerts

Além disso, a URL precisa ser uma com HTTPS(SSL). Sobre este ponto, nao tive maiores problemas, apenas adquiri um certificado SSL e apliquei na minha aplicacao, como de costume.

Meu servidor web é um TOMCAT.