Histórico de mensagens sobre ssl em pix

EXIBINDO CONVERSAS RECENTES:

Texto: ssl
Canal: pix
Avatar discord do usuario anoni_mato

anoni_mato

Outra coisa que eu já vi é o Apache dar problema quando vc usa um certificado que inclui a cadeia como SSLCertificateFile e tenta usar um SSLCACertificateFile ao mesmo tempo. Se limitar o TLS a 1.2+ não resolver, tenta usar o certificado sem a cadeia do Let's Encrypt (em vez do fullchain.pem, deve ter um outro arquivo que é só o certificado, cert.pem), e criar um arquivo unindo o ca.pem do Lets Encrypt + o .crt da GN pra usar como SSLCACertificateFile (não jogue o crt da GN dentro do ca.pem, pois esse ca.pem é sobrescrito a cada 2-3 meses quando o LE do domínio se renova). edit: ver meu outro comentário abaixo.

Avatar discord do usuario rafaelvverde

rafaelvverde

meu log:

[Fri Jan 15 17:44:16.543418 2021] [ssl:error] [pid 76140] [client 34.193.116.226:45105] AH: verify client post handshake
[Fri Jan 15 17:44:16.543461 2021] [ssl:error] [pid 76140] [client 34.193.116.226:45105] AH10158: cannot perform post-handshake authentication
[Fri Jan 15 17:44:16.543482 2021] [ssl:error] [pid 76140] SSL Library Error: error:14268117:SSL routines:SSL_verify_client_post_handshake:extension not received
[Fri Jan 15 17:44:17.107786 2021] [ssl:error] [pid 76142] [client 34.193.116.226:33026] AH: verify client post handshake
[Fri Jan 15 17:44:17.107818 2021] [ssl:error] [pid 76142] [client 34.193.116.226:33026] AH10158: cannot perform post-handshake authentication
[Fri Jan 15 17:44:17.107835 2021] [ssl:error] [pid 76142] SSL Library Error: error:14268117:SSL routines:SSL_verify_client_post_handshake:extension not received

Avatar discord do usuario rafaelvverde

rafaelvverde

:443>
ServerName idelivery.autum.com.br
ServerAlias .idelivery.autum.com.br
DocumentRoot /var/www/autum-idelivery/public

Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
Require all granted


SSLEngine on
#SSLCertificateFile "/etc/apache2/ssl/certificates/idelivery.autum.com.br.crt"
SSLCertificateFile "/etc/letsencrypt/live/idelivery.autum.com.br/fullchain.pem"
#SSLCertificateKeyFile "/etc/apache2/ssl/certificates/idelivery.autum.com.br.key"
SSLCertificateKeyFile "/etc/letsencrypt/live/idelivery.autum.com.br/privkey.pem"
SSLCACertificateFile "/etc/apache2/ssl/certificates/chain-pix-gerencianet-prod.crt"
SSLVerifyClient none


#SSLCACertificateFile "/etc/apache2/ssl/certificates/chain-pix-gerencianet-prod.crt"
SSLVerifyClient require
SSLVerifyDepth 3


ErrorLog ${APACHE_LOG_DIR}/autum-idelivery-error.log
CustomLog ${APACHE_LOG_DIR}/autum-idelivery-access.log combined

Avatar discord do usuario matheus_efi

matheus_efi

Ver Respostas

Boa tarde <@!796521130038657045>! Como está a configuração do seu servidor? Verifique se o nosso CA está incluso e se o seu domínio está com o SSL (HTTPS)

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

<@!797900884436582411> Reparei em seu oOptions, no trecho cert: fs.readFileSync('./ssl/ssls/pixblack.in.crt') você está referenciando um arquivo .ctr

Em meu servidor estou referenciando um arquivo fullchain.pem, verifique se isto está influenciando em algo

Avatar discord do usuario branco1550

branco1550

Ver Respostas

sslOptions = {
key: fs.readFileSync('./ssl/ssls/pixblack_in.pem'),
cert: fs.readFileSync('./ssl/ssls/pixblack.in.crt'),
ca: fs.readFileSync('./ssl/ssls/chain-pix-prod.crt'),
minVersion: 'TLSv1.2', // força o uso de TLS da versão 1.2 para cima
requestCert: true, // força que o cliente envie um certificado de cliente (mtls)
rejectUnauthorized: false // rejeita clientes que não enviarem certificados válidos
};

Avatar discord do usuario branco1550

branco1550

certificado de domino pelo SSLS

Avatar discord do usuario guilherme_eyhe3189

guilherme_eyhe3189

curl_setopt_array($curl, array(
CURLOPT_URL => "https://api-pix-h.gerencianet.com.br/oauth/token", // Rota base, desenvolvimento ou produção
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"], // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic $autorizacao",
"Content-Type: application/json"
),
));

Avatar discord do usuario matheus_efi

matheus_efi

Ver Respostas

Seu servidor é em Node? Tente utilizar este comando npm config set strict-ssl false

Avatar discord do usuario matheus_efi

matheus_efi

Ver Respostas

Diego, tem como informar como está o path ao seu certificado?
CURLOPT_SSLCERT => ?

Avatar discord do usuario diegohenrique1989

diegohenrique1989

Ver Respostas

Estou tendo este erro dentro da função emitePix da sdk de exemplo: could not load PEM client certificate, OpenSSL error error:02001003:system library:fopen:No such process, (no key found, wrong pass phrase, or wrong file format?), alguém sabe como resolver ou o que pode ser?

Avatar discord do usuario teodoro.rafael

teodoro.rafael

function getAccessToken($pix_url_auth, $arq_certificado, $client_id, $client_secret)
{
/
# Esta rotina consome um endpoid POST da Gerencianet para realizar a geração do AccessToken
/

$curl = curl_init();

$authorization = base64_encode("$client_id:$client_secret");

curl_setopt_array($curl, array(
CURLOPT_URL => $pix_url_auth, // Rota base, desenvolvimento ou produção
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 => $arq_certificado, // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic $authorization",
"Content-Type: application/json"
),
));

$response = curl_exec($curl);

curl_close($curl);

return json_decode($response, true);
}

Avatar discord do usuario teodoro.rafael

teodoro.rafael

Ver Respostas

no postman é retornado "forbidden" e no exemplo do git aparece "'could not load PEM client certificate, OpenSSL error error:02001003:system library:fopen:No such process, (no key found, wrong pass phrase, or wrong file format?)"

Avatar discord do usuario guilherme_efi

guilherme_efi

Isso mesmo, Renato. <@!585695073908293632>, pode ter sim SSL Lets Encrypt.

Neste caso, para que funcione em sua URL, você deve especificar a rota para exigir o certificado somente na rota /webhook. Da forma que está utilizando, irá exigir certificado a qualquer rota da sua URL

Para isso, para configurar utilize:

SSLCertificateFile /caminho_certificado/server_ssl.crt.pem
SSLCertificateKeyFile /caminho_certificado/server_ssl.key.pem

SSLCACertificateFile /caminho_certificado/chain-pix-prod.crt

SSLVerifyClient none

SSLVerifyClient require
SSLVerifyDepth 3

Avatar discord do usuario anoni_mato

anoni_mato

Ver Respostas

seudominio.com.br pode ter um SSL let's encrypt mas especificamente o endpoint seudominio.com.br/webhook precisa de configurações no webserver (Apache, Nginx, Lightspeed ou o que for) que exijam o certificado da gerencianet nas conexões entrantes (canal mTLS)

Avatar discord do usuario rafael_fig

rafael_fig

Ver Respostas

Eu dei uma olhada em sua resposta anterior, <@!775350441965649951> , entretanto, não faço as configurações do servidor, esse papel é um serviço terceirizado aqui na empresa. O certificado está sendo requisitado em uma rota específica, por exemplo: https://dominio.com.br/webhook
Não sei se isso vem ao caso, mas podemos utilizar o certificado SSL Lets Encrypt?

Como dito acima, quem gerencia o servidor é uma empresa terceirizada, mas não estou conseguindo passar a eles o que realmente eu preciso e/ou qual o problema..

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Realmente pode ser algo na configuração do mTLS.
É isto mesmo, e deve conter também:

SSLCertificateFile /caminho_certificado/server_ssl.crt.pem
SSLCertificateKeyFile /caminho_certificado/server_ssl.key.pem

Avatar discord do usuario rafael_fig

rafael_fig

Ver Respostas

Para configurar o mTLS eu devo inserir no servidor:
SSLVerifyClient require
SSLVerifyDepth 3
SSLCACertificateFile /caminho_certificado/chain-pix-prod.crt

Ou eu preciso fazer alguma outra coisa?