Erro ERR_BAD_SSL_CLIENT_AUTH_CERT
Bom dia turma!
Não consigo fazer o cadastro da url, esta retornando erro ERR_BAD_SSL_CLIENT_AUTH_CERT
Variáveis que estão sendo enviadas:
Termos mais procurados:
Termos mais procurados:
Erro ERR_BAD_SSL_CLIENT_AUTH_CERT
Bom dia turma!
Não consigo fazer o cadastro da url, esta retornando erro ERR_BAD_SSL_CLIENT_AUTH_CERT
Variáveis que estão sendo enviadas:
no caso do CURL, pode ser enviado no array como CURLOPT_SSLCERT
$config = [
"certificado" => "./certificados/homologacao-certificado_cert.pem",
"client_id" => "???",
"client_secret" => "???"
];
$autorizacao = base64_encode($config["client_id"] . ":" . $config["client_secret"]);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://pix-h.api.efipay.com.br/oauth/token',
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_HTTPHEADER => array(
"Authorization: Basic $autorizacao",
"Content-Type: application/json"
),
));
$response = curl_exec($curl);
curl_close($curl);
if(curl_errno($curl)) {
echo 'Erro no cURL: ' . curl_error($curl);
} else {
echo $response;
}
@guilherme_efi Parece que não está carregando o certificado, pode me ajudar a resolver?
"Erro no cURL: could not load PEM client certificate, OpenSSL error error:80000002:system library::No such file or directory, (no key found, wrong pass phrase, or wrong file format?)"
Tudo bem Guilherme.
Eu gostaria de utilizar o CURL mesmo, não quero utilizar o SDK em minha aplicação, tem como me ajudar?
$config = [
"certificado" => "certificado.pem",
"client_id" => "Client_Id???",
"client_secret" => "Client_Secret_???"
];
$autorizacao = base64_encode($config["client_id"] . ":" . $config["client_secret"]);
$curl = curl_init();
curl_setopt_array($curl, array(
//CURLOPT_URL => "https://pix-h.api.efipay.com.br/oauth/token",
CURLOPT_URL => "https://pagarcontas.api.efipay.com.br/v1/oauth/token",
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"
),
));
$response = curl_exec($curl);
curl_close($curl);
echo "
";";
echo $response;
echo "
boa noite pessoal, estou tendo problemas para configurar o webhook pix sempre retona 403.
{
"nome": "webhook_invalido",
"mensagem": "A URL informada respondeu com o código HTTP 403"
}
já testei e sei que o erro está nessa parte da config do nginx:
location /api/webhook {
if ($ssl_client_verify != SUCCESS) {
return 403;
}
já baixei o certicado certificate-chain-homolog.crt
$config = [
"certificado" => "./producao.pem",
"client_id" => "",
"client_secret" => ""
];
$autorizacao = base64_encode($config["client_id"] . ":" . $config["client_secret"]);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://pix-h.api.efipay.com.br/oauth/token", // Rota base, homologação 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"
),
));
$response = curl_exec($curl);
curl_close($curl);
echo "
";";
echo $response;
echo "
Pode, basta que você configure o certificado SSL que você tem ao invés do gerado pelo certbot.
todo tutorial que assisto ou pela propria documentação sempre fala sobre as SSL usando certbot. porem onde eu hospedo minha API ja me gera um certificado SSL automaticamente. essa parte de certbot eu posso ignorar?
O meu código está assim:
$config = [];
$config["certificado"] = config("services.efipay.certificate_path");
$config["client_id"] = config("services.efipay.client_id");
$config["client_secret"] = config("services.efipay.client_secret");
$headers = [];
$headers['Authorization'] = "Basic " . base64_encode($config["client_id"] . ":" . $config["client_secret"]);
$headers['Content-Type'] = 'application/json';
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://pix-h.api.efipay.com.br/oauth/token", // Rota base, homologação ou produção
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 60,
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 => $headers
));
$response = curl_exec($curl);
if (curl_errno($curl)) {
dd('Error:' . curl_error($curl));
}
curl_close($curl);
dd($response);
Para gerar um certificado SSL via certbot você pode utilizar o seguinte comando:
Bom dia, @otherpaulo, tudo bem?
Neste caso seria preciso que você consiga referenciar o caminho em que estas chaves para o SSL serão criadas, sem isso você não conseguirá criar o servidor HTTPS em questão dessa forma. Você também pode buscar soluções de implementações de servidores HTTPS Node com o easyPanel e replicar em seu ambiente realizando os ajustes para que haja o mTLS
opa, bom dia! estou na parte de configuração do meu webhook pix onde preciso adicionar um certificado e uma key gerados pelo certbot, porém, no estou usando o easyPanel que ao realizar o deploy ele já cria um certificado ssl automaticamente e gostaria de saber se consigo dar continuidade na lógica mesmo não passando o cert e o key, deixando somente o ca da gerencianet.
const httpsOptions = {
cert: fs.readFileSync(""), // Certificado fullchain do dominio
key: fs.readFileSync("/"), // Chave privada do domínio
ca: fs.readFileSync(""), // Certificado público da Efí
minVersion: "TLSv1.2",
requestCert: true,
rejectUnauthorized: true, //Caso precise que os demais endpoints não rejeitem requisições sem mTLS, você pode alterar para false
};
ja que localmente não possui o certificado ssl
Alguns pontos de atenção que você pode conferir são: falta das libs necessárias, versão incompatível do JDK,
Portanto confira se foi feita a instalação de todas as libs que são utilizadas, verifique se a versão do JDK é a mesma que você utilizou para testar o seu código.
Você pode ativar os logs detalhados para SSL/TLS para obter mais informações sobre essa falha
java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext
bom dia, hospedei o meu sitema em um servidor mas quando tento uma consulta para gerar uma cobranca recebo o erro de ssl aparentemente
Este teste feito agora não mostrou problemas:
https://www.ssllabs.com/ssltest/analyze.html?d=api-pix.gerencianet.com.br