Histórico

EXIBINDO CONVERSAS RECENTES:

Texto: mtls
# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver RespostasVer no Discord

Para a parte de webhook os únicos clouds com suporte a mTLS com CA Privada que localizei foram AWS e OCI. Então usar o OCI pode te ajudar no ponto futuro que mencionei, webhook. Mas não precisa usar o API Gateway se não quiser, sendo VM você é root e pode fazer a configuração que quiser, incluindo as requeridas para validar se é a Efí mesmo te notificando.

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver RespostasVer no Discord

Há algumas coisas chatinhas na API Pix padrão como o mTLS... mas que fazem parte do padrão do Banco Central, então implementar seguindo esse padrão também facilita a que você depois permaneça na Efí por escolha e não por ter custo de fazer uma nova integração.

# pix
Avatar discord do usuario thiagorobles

thiagorobles

Ver RespostasVer no Discord

fiz a alteração abaixo, adicionei o cert e a key que baixei no momento da criação da aplicação

private instance = axios.create({
httpsAgent: new https.Agent({
cert: Buffer.from(process.env.EFI_CERT, 'base64'),
key: Buffer.from(process.env.EFI_KEY, 'base64'),
ca: Buffer.from(process.env.CHAIN_PIX_PROD_CRT_BASE64, 'base64'),
requestCert: true,
rejectUnauthorized: true,
}),
headers: {
'x-skip-mtls-checking': true,
},
});

Agora o erro que recebo é unable to get local issuer certificate

parece ser algo relacionado ao SSL, porem está configurado corretamente pelo ACM do heroku

essas variaveis de ambiente estao configuradas pelo heroku, fiz o encode para base64, loguei o resultado do Buffer.from, e está logando os certificados corretamente (cert, key e ca)

# pix
Avatar discord do usuario thiagorobles

thiagorobles

Ver RespostasVer no Discord

@rubenskuhl obrigado pelo retorno, eu tentei integrar no meu Controller (uso nestjs) na minha API que está no heroku, aqui está o código:

import {
ClassSerializerInterceptor,
Controller,
HttpCode,
HttpStatus,
Logger,
Post,
Req,
UseInterceptors,
} from '@nestjs/common';
import { LoggerInterceptor } from '@src/common/logger/logger-interceptor';
import configuration from '@src/config/configuration';
import axios from 'axios';
import { Request } from 'express';
import as https from 'https';

const { httpsOptions } = configuration();
@Controller('efi-gerencianet')
@UseInterceptors(ClassSerializerInterceptor, LoggerInterceptor)
export class EfiGerencianetController {
private readonly logger = new Logger(EfiGerencianetController.name);

private instance = axios.create({
httpsAgent: new https.Agent({
ca: httpsOptions.ca,
requestCert: true,
rejectUnauthorized: true,
}),
headers: {
'x-skip-mtls-checking': true,
},
});

@Post('webhook/pix')
@HttpCode(HttpStatus.OK)
handlePixCallback(@Req() req: Request) {
const body = req.body;

this.logger.log(Received callback from Gerencianet);
this.logger.debug(body);
return body;
}

@Post('configure-webhook')
async configureWebhook() {
const url =
'https://api-pix.gerencianet.com.br/v2/webhook/4114c4e9-202c-4979-8534-34a4e5a29ad0';
const data = {
webhookUrl: '',
};

try {
const response = await this.instance.put(url, data);
this.logger.log(
Webhook configured successfully. Status code: ${response.status},
);
return response.data;
} catch (error) {
this.logger.error(Error configuring webhook: ${error.message});
throw new Error(Error configuring webhook: ${error.message});
}
}
}


subi pra produção, e ao chamar o endpoint recebo o erro: Error: Error configuring webhook: read ECONNRESET

Para SSL estou usando o heroku ACM (auto managed).


Sabem o que posso estar fazendo errado?

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver RespostasVer no Discord

Um certificado CA de mTLS tipicamente não se importa, e sim se usa ele numa configuração.

# pix
Avatar discord do usuario jessica_efi

jessica_efi

Ver RespostasVer no Discord

Isso mesmo @andersonhsilva ! Esse serviço está protegido por uma camada de autenticação mTLS. Os callbacks são enviados pela Efí via POST url-webhook-cadastrada​/pix quando há uma alteração no status do Pix.

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver no Discord

Mesmo na devolução, o webhook vai dar a nova situação daquele Pix.
O que você precisa validar é (1) certificado da Efí no mTLS (2) que a chave Pix é uma para a qual você emitiu cobrança naquele txid

# pix
Avatar discord do usuario diogo.f.m.7

diogo.f.m.7

Ver RespostasVer no Discord

E na real não é bem assim né...
No início, não existia esse Skip... Acho q eles ficaram preocupados, pq muitos PSPs fora do padrão, não são punidos, e acabam "roubando clientes" deles, já que não exigem o mtls...

# pix
Avatar discord do usuario diogo.f.m.7

diogo.f.m.7

Ver RespostasVer no Discord

Eu agr concordo com o @rubenskuhl, mas acho q a EFI vai ter muitoooo problema com esse skip-mtls...

Ontem tivemos um debate bem interessante, hoje vi q a EFI se exime de culpa, mas no final, se der BO, eles vão acabar punidos pelo BC... Em hlg terno Skip ok, mas em prod abre margem para problemas...

Maaaaaasssss, como isso é Brasil, da msm forma q tem N PSPs com api fora do padrão, e eu diria que vai continuar assim .. nada vai acontecer...

# pix
Avatar discord do usuario f1ed7e55d61c2f1af0ae4a2814_43203

f1ed7e55d61c2f1af0ae4a2814_43203

Ver RespostasVer no Discord

Como que vai verificar o certificado, se o skip-mtls vai estar ativado? 🤔

# pix
Avatar discord do usuario f1ed7e55d61c2f1af0ae4a2814_43203

f1ed7e55d61c2f1af0ae4a2814_43203

Ver no Discord

Parâmetro ".headers['x-skip-mtls-checking']", deve ser igual a um dos valores predefinidos

Alguém saberia me dizer como resolver isso?

imagem enviada na mensagem pelo usuario f1ed7e55d61c2f1af0ae4a2814_43203

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver RespostasVer no Discord

Todos os concorrentes da Efí que analisamos que seguiam a API Pix padrão do BACEN tem webhook com mTLS... vários inclusive que requerem certificado ICP-Brasil no webhook, o que é tremendamente não prático. A Efí emite os certificados com CA dela o que é bem simples de usar.

# pix
Avatar discord do usuario geovannisc

geovannisc

Ver RespostasVer no Discord

Vou utilizar a EFI por conta do SDK e documentação que é maravilhosa, mas a questão do WEBHOOK do pix é realmente uma pedra no sapato, não tem nenhum concorrente da EFI que eu tenha conhecimento que utilize mtls, pra implementar isso no meu sistema eu vou ter que mudar toda a estrutura do meu servidor aumento muito o nivel de complexidade para simplesmente receber a confirmação do recebimento. Pensei varias vezes em mudar para outra plataforma por causa disso. Para não ter que fazer a configuração do mtls estou pensando em validar de outra maneira atraves das chamadas mesmo. Assim que o usuario atualizar a tela ou entrar fazer a chamada para verificar. Isso deixa a desejar muito.

# pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver RespostasVer no Discord

Olá, @diogo.f.m.7 e @rubenskuhl. Bom dia!

Gostaríamos de esclarecer que, conforme as normas do Banco Central, as notificações enviadas do PSP recebedor (no caso, a Efí) para o usuário recebedor trafegam utilizando o canal mTLS. Como parte desse protocolo, sempre enviamos o certificado nos webhooks, seja no cadastro ou na notificação de Pix.

Entendemos que em alguns cenários, como hospedagem em servidores compartilhados, pode haver restrições em relação à inserção de certificados. Por isso, disponibilizamos a opção skip mTLS, que permite o cadastro do webhook sem a necessidade do hand shake mTLS por parte do integrador. É importante destacar que, ao optar por utilizar o atributo skip mTLS, o integrador fica responsável por validar o nosso certificado, conforme as orientações que fornecemos.

Ressaltamos que sempre seguimos as diretrizes do Banco Central para garantir a segurança e conformidade de nossos serviços. 🧡