Al realizar peticiones HTTP usando cURL, a veces hay un problema con la verificación de certificados SSL. Esto puede ocurrir cuando se utiliza un certificado de servidor autofirmado, o si está caducado. En tales circunstancias, cURL deniega por defecto la conexión para salvaguardar al usuario de posibles riesgos. Sin embargo, esto podría obstaculizar el proceso durante las pruebas de API, el trabajo en redes cerradas o el uso de servicios locales. Por eso necesitamos averiguar en qué circunstancias cURL ignora SSL y cómo implementarlo.
En este artículo se detallará cómo ignorar los certificados SSL en cURL, los comandos específicos que hay que ejecutar y los posibles problemas relacionados con la seguridad.
cURL (Client URL) es un proyecto de software que proporciona una línea de comandos y una biblioteca para transferir datos utilizando varios protocolos. Esta herramienta es muy útil para automatizar peticiones, pruebas de API o recuperación de información de diversos recursos web, ya que funciona con multitud de tipos de red.
SSL (Secure Sockets Layer) es una forma de tecnología de encriptación que asegura la transmisión de datos a través de Internet. Este certificado es un documento que demuestra que un determinado sitio web es auténtico y establece una conexión segura entre el usuario y el servidor. Los certificados de servidor autofirmados, caducados o no válidos provocan bloqueos al utilizar cURL.
Para escapar de tales desafíos, es mejor deshabilitar cURL SSL, así, realizar peticiones cURL tendrá una mayor tasa de éxito. Este método de prueba es muy útil, pero puede ser peligroso desde el punto de vista de la seguridad.
El nombre oficial de la herramienta es cURL, la primera letra de la palabra es minúscula y el resto son mayúsculas. En los documentos, artículos y códigos encontrarás otras formas:
Independientemente de la ortografía, cURL es siempre cURL. Es una herramienta multiplataforma y de línea de comandos para transferir datos con sintaxis URL. La mayoría de las personas en desarrollo web, administración de sistemas y DevOps lo utilizan para realizar solicitudes HTTP, probar API y realizar interacciones de automatización de servidores.
Normalmente, la utilidad de transferencia de datos valida los certificados que aparecen en la pantalla del usuario para frustrar sitios falsos y ataques. Hay escenarios, sin embargo, cuando el cURL ignorar la verificación de certificados. Veamos cuándo surgen esos casos:
A pesar de que la comprobación es un factor vital, desactivarla por completo puede plantear problemas y riesgos. Los analizaremos a continuación.
Cuando cURL ignora los certificados significa que la conexión puede ser explotada a través de diversos ataques de seguridad, y esto es particularmente importante cuando se trata de información sensible, incluyendo contraseñas, tokens o incluso datos de pago.
Principales amenazas:
Si se requiere que cURL ignore los errores SSL, entonces es primordial ver los certificados autofirmados:
En el siguiente bloque, analizaremos en detalle los procesos que se llevan a cabo en la línea de comandos para deshabilitar la verificación de certificados.
Para hacer que cURL ignore SSL, es necesario incluir parámetros específicos que suspendan la verificación de autenticación. Como se ha indicado anteriormente, este tipo de prácticas sólo pueden utilizarse dentro de un entorno debidamente protegido.
El método más eficaz para mitigar un error de certificado de sitio no válido es configurar manualmente una falsificación de verificación temporal. Esto se puede hacer con los siguientes parámetros:
A continuación se muestra cómo puede realizar un ejemplo de llamada cURL que ignore la verificación de certificados:
curl -k https://example.com
Esto permitirá que la llamada cURL se realice incluso con un certificado de servidor caducado.
Si desea enviar datos (como en una solicitud POST):
curl -k -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "param=value" https://example.com/api
Para mayor seguridad, seleccione directamente el directorio donde se encuentra el archivo.
curl --cacert /path/to/cert.pem https://example.com
Si la solicitud está pensada para ser automatizada a través de una línea de comandos y la presencia del usuario no debería ser necesaria, entonces es beneficioso deshabilitar las comprobaciones de certificados en tales escenarios.
Aquí hay un ejemplo en Bash, como cURL ignora SSL:
#!/bin/bash
URL="https://example.com"
DATA=$(curl -k $URL)
echo "Server response: $DATA"
Con Python, puede utilizar el módulo requests con verify en False:
import requests
url = "https://example.com"
response = requests.get(url, verify=False)
print(response.text)
Al ejecutar este comando, Python te dará una advertencia sobre una conexión insegura. Además, tendrás que asegurarte de escribir código para desactivar las advertencias que surgen en caso de que el sitio tenga un certificado de servidor no válido:
import requests import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
url = "https://example.com"
response = requests.get(url, verify=False)
print(response.text)
Y ahora PHP con 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;
La siguiente tabla enumera los métodos más comunes para ignorar la comprobación SSL, su uso y los posibles riesgos.
Método | Comando / Parámetro | Cuándo utilizar | Riesgos |
---|---|---|---|
Desactivación completa de SSL y verificación del nombre de host | curl -k / --insecure | API de prueba, servicios locales | Alto riesgo de MITM |
Utilizar un certificado personalizado | curl --cacert /path/to/cert.pem | En caso de que tenga su propio certificado | Más seguro, pero requiere configuración |
Deshabilitar sólo SSL en código | CURLOPT_SSL_VERIFYPEER=false | Pruebas temporales | Peligroso si sigue en producción |
El mal funcionamiento de los certificados de servidor crea más problemas que sólo cuando funcionan con cURL. Los certificados garantizan la seguridad de los usuarios durante la transferencia de datos. Por lo tanto, desactivar la verificación es el último recurso cuando se encuentra un error depurando cURL. En función de la causa del error, existen otros enfoques menos extremos, como actualizar el documento, añadirlo a la región de confianza o simplemente cambiarlo por el correcto.
Sin la comprobación SSL, la conexión sería insalubre y fácilmente abusable por otros usuarios. Este enfoque sólo es aceptable en entornos controlados, como cuando uno está haciendo una prueba, o cuando el servicio es externo. En circunstancias normales, cuando se presenta un certificado de servidor inválido, es crucial que esta cláusula no se establezca en el código de trabajo, ya que se presentaría enmascaramiento de datos y otros agujeros de seguridad.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Comentarios: 0