Histórico de mensagens sobre certificado em pix

EXIBINDO CONVERSAS RECENTES:

Texto: certificado
Canal: pix
Avatar discord do usuario schoeps2724

schoeps2724

Ver Respostas

ustilizo curl_setopt_array($curl, array(
CURLOPT_URL => $vrota,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => '{"grant_type": "client_credentials"}',
CURLOPT_SSLCERT => $config['certificado'],
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic $autorizacao",
"Content-Type: application/json"
),
));

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

O Heroku gera um certificado TLS automático ? Todos os acessos estão especificando https:// ?

Avatar discord do usuario renato.barbosa.

renato.barbosa.

Ver Respostas

Bom dia pessoal. Fiz a implementação seguindo seu exemplo <@!780500321994539068> mas ainda tenho o mesmo problema. Para testar eu gerei chaves locais e um certificado público que mando nas requisições via insomnia. e quando acesso rotas que não deveriam exigir o certificado, tomo erro de SSL

(Error: SSL peer certificate or SSH remote key was not OK)
Obs: utilizei requestCert: true e rejectUnauthorized: false como mencionado :(. Alguma sugestão?

Avatar discord do usuario palloma_efi

palloma_efi

Ver Respostas

Olá <@!360519039019122701> ! Boa noite. Dentro do seu arquivo config.json, você está inserindo o caminho do seu certificado(campo "pix_cert")?

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

requestCert tem que ser true, rejectUnauthorized false.

const express = require("express");
const fs = require("fs");
const https = require("https");
var logger = require('morgan');

const httpsOptions = {
cert: fs.readFileSync(""), // Certificado fullchain do dominio
key: fs.readFileSync("/"), // Chave privada do domínio
ca: fs.readFileSync(""), // Certificado público da Gerencianet
minVersion: "TLSv1.2",
requestCert: true,
rejectUnauthorized: false, //Mantenha como false para que os demais endpoints da API não rejeitem requisições sem MTLS
};

const app = express();
const httpsServer = https.createServer(httpsOptions, app);
const PORT = 443;

app.use(logger('dev')); // Comente essa linha caso não queira que seja exibido o log do servidor no seu console
app.use(express.json());
app.use(express.urlencoded({ extended: false }));

// Endpoint para configuração do webhook, você precisa cadastrar https://SEUDOMINIO.com/webhook
app.post("/webhook", (request, response) => {
// Verifica se a requisição que chegou nesse endpoint foi autorizada
if (request.socket.authorized) {
response.status(200).end();
} else {
response.status(401).end();
}
});

// Endpoind para recepção do webhook tratando o /pix
app.post("/webhook/pix", (request, response) => {
if (request.socket.authorized){
//Seu código tratando a callback
/ EXEMPLO:
var body = request.body;
filePath = __dirname + "/data.json";
fs.appendFile(filePath, JSON.stringify(body) + "\n", function (err) {
if (err) {
console.log(err);
} else {
response.status(200).end();
}
})
/
response.status(200).end();
}else{
response.status(401).end();
}
});

httpsServer.listen(PORT, () =>
console.log(Express server currently running on port ${PORT})
);

Avatar discord do usuario renato.barbosa.

renato.barbosa.

Bom dia pessoal. Estou tentando fazer a integração pix utilizando o certificado mtls em uma das rotas no node, mas estou tomando block em todas. Teriam um exemplo de código com autenticação mtls apenas no webhook?

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

O que o teste faz é uma requisição com o certificado e uma sem. E o erro está dizendo que a requisição sem o certificado funciona.

Avatar discord do usuario rubenskuhl

rubenskuhl

... dado depender do certificado da GN, talvez o pessoal da @Consultoria Técnica possa olhar os logs do lado deles e fazer testes com requisições...

Avatar discord do usuario israelbarbara.

israelbarbara.

Ver Respostas

eu utilizo um servidor ubuntu com uma aplicação em nodejs, o nginx ja esta configurado, baixei o certificado .crt para o servidor com o nginx apontando para ele. O OpenSSl que esta intalado no servidor esta na versão mais recente, para suportar o TLS 1.2

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Se fosse o certificado nem resposta HTTP 400 teria.

Avatar discord do usuario George Leite

George Leite

usando o mesmo certificado no postman e mesmo formato de requisição na aplicação.

Avatar discord do usuario George Leite

George Leite

Ver Respostas

nao, ele nem conecta pelo q to vendo, será algo relacionado ao certificado?

Avatar discord do usuario matheus_efi

matheus_efi

Ver Respostas

Bom dia, <@!176140065729282048>. É exatamente o que o Rubens disse, esta falha é relativa a utilizar um certificado autoassinado. Em nossa documentação deixamos como exemplo o Certbot(https://certbot.eff.org/) por ser gratuito, mas nada impede de utilizar outras entidades certificadoras caso queira, o importante é não ser autoassinado.

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Você usou um certificado auto-assinado, e precisa obter um certificado assinado por autoridade certificadora. Que pode ser gratuito como o Let's Encrypt ou alguma outra CA que você prefira.

Avatar discord do usuario petrikov555

petrikov555

Ver Respostas

Boa tarde a todos! Por favor, o certificado necessário p/ consumir a API PIX da Gerencianet possuí validade de quantos anos?

Avatar discord do usuario matheus_efi

matheus_efi

No exemplo do nginx tem o location, segue:

json
server {
#
# ...
#
listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
ssl_certificate server_ssl.crt.pem;
ssl_certificate_key server_ssl.key.pem;
ssl_client_certificate /root/chain-pix-webhooks-prod.crt;
ssl_verify_client optional;
ssl_verify_depth 3;
#
# ...
#
location /webhook {
if ($ssl_client_verify != SUCCESS) {
return 403;
}
rewrite ^(.)$ /webhook;
}
}
Já no exemplo de Flasky, é so inserir no @app.route o caminho de onde o certificado seria exigido, exemplo:
py

@app.route("/webhook", methods=["POST"])
def imprimir():
imprime = print(request.json)
data = request.json
with open('data.txt', 'a') as outfile:
outfile.write("\n")
json.dump(data, outfile)
return jsonify(imprime)

Avatar discord do usuario tiagobogoni

tiagobogoni

Ver Respostas

vcs tem esse exemplo de como configurar uma rota para exigir certificado?

Avatar discord do usuario matheus_efi

matheus_efi

No exemplo de python(Flasky), você pode definir um route(rota) responsável pelo cadastro e recebimento do webhook e somente nestas rotas exigir o certificado.

Avatar discord do usuario matheus_efi

matheus_efi

Ver Respostas

Se você configurar a exigência do certificado em seu domínio principal, teria sim este problema de acesso, pois iria requerer o certificado. Mas existe mais de uma solução para isso, como a criação de uma location ou de um subdomínio atendendo só o webhook. Desta forma seus clientes continuariam a ter acesso normal ao seu server.

Avatar discord do usuario tiagobogoni

tiagobogoni

Ver Respostas

se eu configurar o certificado como mostrar no exemplo no site
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
context.verify_mode = ssl.CERT_REQUIRED
context.load_verify_locations('caminho-certificados/certificado-público-Gerencianet.crt')
context.load_cert_chain(
'caminho-certificados/server_ssl.crt.pem',
'caminho-certificados/server_ssl.key.pem')
app.run(ssl_context=context, host='0.0.0.0')

terá problema de hj o pessoal que acessa não conseguir mais? por causa a exigencia do certificado do gerencianet?