Ao executar solicitações HTTP usando cURL, às vezes há um problema com a verificação de certificados SSL. Isso pode acontecer quando um certificado de servidor auto-assinado é usado, ou se ele expirou. Nessas circunstâncias, o cURL, por defeito, nega a ligação para proteger o utilizador de possíveis riscos. No entanto, isso pode obstruir o processo durante o teste da API, trabalhando em redes fechadas ou usando serviços locais. É por isso que precisamos descobrir em que circunstâncias o cURL ignora o SSL e como implementá-lo.
Este artigo detalhará como ignorar certificados SSL no cURL, os comandos específicos que precisam ser executados e possíveis preocupações relacionadas à segurança.
cURL (Client URL) é um projeto de software que fornece uma linha de comando e uma biblioteca para transferência de dados usando vários protocolos. Essa ferramenta é muito útil para automatizar solicitações, testes de API ou recuperação de informações de vários recursos da Web, pois funciona com uma infinidade de tipos de rede.
SSL (Secure Sockets Layer) é uma forma de tecnologia de encriptação que assegura a transmissão de dados através da Internet. Este certificado é um documento que prova que um determinado site é autêntico e estabelece uma ligação segura entre o utilizador e o servidor. Certificados de servidor auto-assinados, expirados ou inválidos levam a bloqueios durante a operação do cURL.
Para escapar a tais desafios, é melhor desativar o SSL do cURL, assim, a execução de pedidos cURL terá uma taxa de sucesso mais elevada. Esse método de teste é muito útil, mas pode ser perigoso em termos de segurança.
O nome oficial da ferramenta é cURL, a primeira letra da palavra é minúscula e as demais são maiúsculas. Nos documentos, artigos e códigos, você encontrará várias outras formas:
Independentemente da ortografia, cURL é sempre cURL. É uma ferramenta multiplataforma e de linha de comando para transferência de dados com sintaxe de URL. A maioria das pessoas em desenvolvimento web, administração de sistemas e DevOps usam-no para fazer solicitações HTTP, testar APIs e realizar interações de automação de servidor.
Normalmente, o utilitário de transferência de dados valida os certificados que aparecem no ecrã do utilizador para impedir sites falsos e ataques. No entanto, existem cenários em que o cURL ignora a verificação do certificado. Vamos ver quando essas instâncias surgem:
Apesar de a verificação ser um fator vital, desactivá-la completamente pode causar problemas e riscos. Vamos discuti-los a seguir.
Quando o cURL ignora os certificados, isso significa que a ligação pode ser explorada através de vários ataques de segurança, o que é particularmente importante quando estão envolvidas informações sensíveis, incluindo palavras-passe, tokens ou mesmo dados de pagamento.
Principais ameaças:
Se for necessário que o cURL ignore os erros SSL, então é fundamental visualizar os certificados auto-assinados:
No próximo bloco, analisaremos detalhadamente os processos que são executados na linha de comando para desativar a verificação de certificados.
Para fazer com que o cURL ignore o SSL, é necessário incluir parâmetros específicos que suspendam a verificação da autenticação. Como observado anteriormente, essas práticas só podem ser usadas em um ambiente devidamente protegido.
O método mais eficaz para atenuar um erro de certificado de site inválido é configurar manualmente uma falsificação de verificação temporária. Isso pode ser feito com os seguintes parâmetros:
Eis como pode criar um exemplo de chamada cURL que ignora a verificação do certificado:
curl -k https://example.com
Isso permitirá que a chamada cURL seja executada mesmo com um certificado de servidor expirado.
Se você quiser enviar dados (como em uma solicitação POST):
curl -k -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "param=value" https://example.com/api
Para maior segurança, deve selecionar diretamente o diretório onde se encontra o ficheiro.
curl --cacert /path/to/cert.pem https://example.com
Se o pedido se destina a ser automatizado através de uma linha de comando e a presença do utilizador não deve ser necessária, então é benéfico desativar as verificações de certificados em tais cenários.
Aqui está um exemplo em Bash, de como o cURL ignora o SSL:
#!/bin/bash
URL="https://example.com"
DATA=$(curl -k $URL)
echo "Server response: $DATA"
Com Python, pode utilizar o módulo requests com verify definido como False:
import requests
url = "https://example.com"
response = requests.get(url, verify=False)
print(response.text)
Ao executar este comando, o Python irá emitir um aviso relativo a uma ligação insegura. Adicionalmente, terá de se certificar que escreve código para desativar os avisos que surgem no caso de o site ter um certificado de servidor inválido:
import requests import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
url = "https://example.com"
response = requests.get(url, verify=False)
print(response.text)
E agora o PHP com cURL:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://example.com");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
A tabela abaixo lista os métodos mais comuns de ignorar a verificação SSL, a sua utilização e os possíveis riscos.
Método | Comando / Parâmetro | Quando utilizar | Riscos |
---|---|---|---|
Desativação completa da verificação SSL e do nome de anfitrião | curl -k / --insecure | Testar APIs, serviços locais | Risco elevado de MITM |
Utilizar um certificado personalizado | curl --cacert /path/to/cert.pem | No caso de ter o seu próprio certificado | Mais seguro, mas requer configuração |
Desativar apenas o SSL no código | CURLOPT_SSL_VERIFYPEER=false | Ensaios temporários | Perigoso se continuar em produção |
Os certificados de servidor que não funcionam corretamente criam mais problemas do que apenas quando são utilizados com o cURL. Os certificados garantem a segurança dos utilizadores durante a transferência de dados. Assim, desativar a verificação é o último recurso quando se encontra um erro na depuração do cURL. Com base na causa do erro, existem outras abordagens menos extremas, como a atualização do documento, a adição à região de confiança ou a simples troca pelo certificado correto.
Sem a verificação SSL, a ligação não seria saudável e seria facilmente abusada por outros utilizadores. Esta abordagem só é aceitável em ambientes controlados, como quando se está a fazer um teste ou quando o serviço é externo. Em circunstâncias normais, quando é apresentado um certificado de servidor inválido, é crucial que esta cláusula não seja definida no código de trabalho, uma vez que se verificariam mascaramentos de dados e outras falhas de segurança.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Comentários: 0