Comment ignorer les erreurs de certificat SSL avec cURL: Un guide pas à pas

Commentaires: 0

Lors de l'exécution de requêtes HTTP à l'aide de cURL, il arrive que la vérification des certificats SSL pose problème. Cela peut se produire lorsqu'un certificat de serveur auto-signé est utilisé, ou s'il a expiré. Dans de telles circonstances, cURL refuse par défaut la connexion pour protéger l'utilisateur des risques éventuels. Toutefois, cela peut entraver le processus lors des tests d'API, du travail sur des réseaux fermés ou de l'utilisation de services locaux. C'est pourquoi nous devons découvrir dans quelles circonstances cURL ignore SSL et comment l'implémenter.

Cet article explique en détail comment ignorer les certificats SSL dans cURL, les commandes spécifiques qui doivent être exécutées et les problèmes éventuels liés à la sécurité.

unnamed.jpg

Que sont cURL et SSL?

cURL (Client URL) est un projet logiciel qui fournit une ligne de commande et une bibliothèque pour le transfert de données à l'aide de divers protocoles. Cet outil est très utile pour l'automatisation des requêtes, les tests d'API ou la récupération d'informations à partir de diverses ressources web, car il fonctionne avec une multitude de types de réseaux.

SSL (Secure Sockets Layer) est une forme de technologie de cryptage qui sécurise la transmission de données sur Internet. Ce certificat est un document qui prouve l'authenticité d'un site web et établit une connexion sécurisée entre l'utilisateur et le serveur. Les certificats de serveur auto-signés, expirés ou invalides entraînent des blocages lors de l'utilisation de cURL.

Pour éviter de telles difficultés, il est préférable de désactiver le SSL par cURL, de sorte que les requêtes cURL auront un taux de réussite plus élevé. Cette méthode de test est très utile, mais peut être dangereuse sur le plan de la sécurité.

cURL, curl ou Curl: Quelle est la différence?

Le nom officiel de l'outil est cURL, la première lettre du mot est en minuscule et le reste en majuscule. Dans les documents, articles et codes, vous trouverez plusieurs autres formes:

  • curl (tout en minuscules) - C'est ainsi que la plupart des développeurs ont tendance à l'écrire dans les codes et les lignes de commande.
  • Curl (C majuscule) - Ce terme est parfois utilisé dans des documents non officiels, mais il est incorrect.

Quelle que soit l'orthographe, cURL est toujours cURL. Il s'agit d'un outil multiplateforme et de ligne de commande permettant de transférer des données à l'aide de la syntaxe URL. La plupart des personnes travaillant dans le développement web, l'administration système et DevOps l'utilisent pour effectuer des requêtes HTTP, tester des API et réaliser des interactions d'automatisation de serveur.

Pourquoi désactiver la vérification SSL?

Normalement, l'utilitaire de transfert de données valide les certificats apparaissant sur l'écran de l'utilisateur afin de contrecarrer les faux sites et les attaques. Il existe cependant des scénarios dans lesquels cURL ignore la vérification des certificats. Examinons ces cas de figure:

  • Certificats auto-délivrés utilisés avec des serveurs locaux ou de test. Lorsqu'ils testent des API ou des applications, les développeurs créent souvent des certificats auto-signés qui ne sont pas approuvés par les autorités de certification officielles.
  • Accès des employés aux services internes de l'entreprise. Les serveurs internes d'une organisation ont généralement des certificats qui ne sont pas fiables. Lorsque l'accès automatisé à ces ressources est obligatoire, la désactivation de la vérification des certificats est une solution temporaire optimale.
  • Certains sites ont un certificat de serveur qui a expiré ou qui n'est pas valide. S'il est crucial d'extraire des informations d'une telle ressource, la validation peut être désactivée temporairement sans que l'utilisateur ne rencontre l'erreur de certificat spécifique. Dans ce cas, cURL ignore les erreurs SSL et tout fonctionne correctement.
  • La désactivation de la vérification permet d'éviter les échecs dans les scripts qui nécessitent l'automatisation des requêtes réseau. Lorsqu'un script envoie systématiquement des requêtes à un serveur dont le certificat est incorrect, la vérification doit être désactivée.

Despite checking being a vital factor, turning it all the way off can pose problems and risks. We will discuss those next.

Risques de sécurité liés à la désactivation de SSL

Lorsque cURL ignore les certificats, cela signifie que la connexion peut être exploitée par diverses attaques de sécurité, ce qui est particulièrement important lorsqu'il s'agit d'informations sensibles telles que des mots de passe, des jetons ou même des données de paiement.

Principales menaces:

  • Man In The Middle Attack (MITM) - une technique qui consiste à intercepter les informations entre l'utilisateur et le serveur et à modifier ou remplacer les données. Le risque est encore plus grand lorsqu'il n'y a personne pour vérifier, car il devient beaucoup trop facile de mettre en œuvre des attaques malveillantes. Par exemple, une page de connexion peut être remplacée par une fausse afin que l'attaquant puisse facilement récupérer les informations d'identification.
  • cURL n'est pas en mesure de vérifier le certificat du serveur, ce qui l'invalide. Il n'y a donc aucun moyen de s'assurer que le nœud recherché est bien celui auquel on se connecte, ce qui permet de substituer des sites en faisant passer des acteurs pour des ressources de confiance.
  • Si, au cours des tests, la vérification est désactivée et que le code est transféré dans l'environnement de production, le risque de fuite, voire d'attaques par force brute compromettant des informations confidentielles, peut augmenter.

Si cURL doit ignorer les erreurs SSL, il est primordial d'afficher les certificats auto-signés:

  • Ne contournez la vérification que dans un environnement de test et évitez-la en production;
  • Ne transmettez pas d'informations confidentielles par le biais d'une connexion non cryptée;
  • Ajoutez manuellement le certificat auto-signé à la liste des certificats approuvés;
  • Contrôler le code, à l'exclusion des erreurs de configuration, pour s'assurer que la vérification est maintenue dans le code de production.

Dans le bloc suivant, nous analyserons en détail les processus qui sont exécutés dans la ligne de commande pour désactiver la vérification des certificats.

Comment contourner les erreurs SSL avec cURL

Pour que cURL ignore SSL, vous devez inclure des paramètres spécifiques qui suspendent la vérification de l'authentification. Comme indiqué précédemment, de telles pratiques ne peuvent être utilisées que dans un environnement correctement sécurisé.

La méthode la plus efficace pour éviter une erreur de certificat de site invalide consiste à configurer manuellement une vérification temporaire. Cette opération peut être effectuée à l'aide des paramètres suivants:

  • -k ou --insecure—pour se connecter à un site où le certificat du serveur s'avère invalide;
  • --cacert—pour définir l'emplacement où le fichier de certificat d'utilisateur est stocké.

Voici comment vous pouvez créer un exemple d'appel cURL qui ignore la vérification des certificats:


curl -k https://example.com

Cela permettra à l'appel cURL d'aboutir même si le certificat du serveur a expiré.

Si vous souhaitez envoyer des données (comme dans une requête POST):


curl -k -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "param=value" https://example.com/api

Pour une sécurité maximale, vous devez sélectionner directement le répertoire dans lequel se trouve le fichier.


curl --cacert /path/to/cert.pem https://example.com

Désactiver la vérification SSL dans votre script

Si la demande est destinée à être automatisée au moyen d'une ligne de commande et que la présence de l'utilisateur n'est pas nécessaire, il est préférable de désactiver la vérification des certificats dans ce cas.

Voici un exemple en Bash, comment cURL ignore SSL:


#!/bin/bash
URL="https://example.com"
DATA=$(curl -k $URL)
echo "Server response: $DATA"

Avec Python, vous pouvez utiliser le module requests avec la valeur False pour la vérification:


import requests
url = "https://example.com"
response = requests.get(url, verify=False)
print(response.text)

Lors de l'exécution de cette commande, Python vous donnera un avertissement concernant une connexion non sécurisée. En outre, vous devrez vous assurer d'écrire du code pour désactiver les avertissements qui surviennent dans le cas où le site a un certificat de serveur invalide:


import requests import urllib3 

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) 

url = "https://example.com"
response = requests.get(url, verify=False)
print(response.text)

Et maintenant, PHP avec 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;

Le tableau ci-dessous répertorie les méthodes les plus courantes pour ignorer le contrôle SSL, leur utilisation et les risques possibles.

Méthode Commande / Paramètre Quand utiliser Risques
Désactivation complète de SSL et de la vérification du nom d'hôte curl -k / --insecure Tester les API, les services locaux Risque élevé de MITM
Utilisation d'un certificat personnalisé curl --cacert /path/to/cert.pem Si vous avez votre propre certificat Plus sûr, mais nécessite une installation
Désactiver uniquement SSL dans le code CURLOPT_SSL_VERIFYPEER=false Tests temporaires Dangereux s'il reste en production

Conclusion

Les certificats de serveur défectueux ne posent pas seulement des problèmes lorsqu'ils sont utilisés avec cURL. Les certificats garantissent la sécurité des utilisateurs lors du transfert de données. La désactivation de la vérification est donc le dernier recours lorsque l'on constate une erreur lors du débogage de cURL. En fonction de la cause de l'erreur, il existe d'autres approches moins extrêmes, telles que la mise à jour du document, l'ajout du certificat à la région de confiance ou son remplacement par le bon certificat.

Sans contrôle SSL, la connexion serait malsaine et facilement exploitable par d'autres utilisateurs. Cette approche n'est acceptable que dans des environnements contrôlés, par exemple lors d'un test ou lorsque le service est externe. Dans des circonstances normales, lorsqu'un certificat de serveur non valide est présenté, il est essentiel que cette clause ne soit pas définie dans le code de travail, car le masquage des données et d'autres failles de sécurité se produiraient.

Commentaires:

0 Commentaires