J'essaie de faire une demande curl à l'un de nos serveurs de développement local exécutant un site de développement avec un certificat SSL auto-signé. J'utilise curl depuis la ligne de commande.
J'ai vu des articles de blog mentionnant que vous pouvez ajouter à la liste des certificats ou spécifier un certificat spécifique (auto-signé) comme valide, mais y a-t-il une façon fourre-tout de dire "ne pas vérifier" le certificat ssl - comme le --no-check-certificate
que wget a?
Oui. Depuis la page de manuel :
-k, --insécurité
(TLS) Par défaut, chaque boucle de connexion SSL établie est vérifiée comme étant sécurisée. Cette option permet à curl de continuer et de fonctionner même pour les connexions serveur autrement considérées comme non sécurisées.
La connexion au serveur est vérifiée en s'assurant que le certificat du serveur contient le bon nom et vérifie avec succès en utilisant le magasin de certificats.
Voir cette ressource en ligne pour plus de détails: https://curl.haxx.se/docs/sslcerts.html
Voir aussi --proxy-insecure et --cacert.
Le référence mentionné dans cette entrée de page de manuel décrit certains des comportements spécifiques de -k
.
Ces comportements peuvent être observés avec curl
demandes de test de pages de BadSSL.com
curl -X GET https://wrong.Host.badssl.com/
curl: (51) SSL: no alternative certificate subject name matches target Host name 'wrong.Host.badssl.com'
curl -k -X GET https://wrong.Host.badssl.com/
..returns HTML content...
Vous pouvez utiliser la commande suivante pour appliquer les modifications à toutes les connexions:
$ echo insecure >> ~/.curlrc
Sous Windows, créez simplement _curlrc
fichier texte contenant du texte "non sécurisé" dans votre %HOME%
, %CURL_HOME%
, %APPDATA%
, %USERPROFILE%
ou %USERPROFILE%\Application Data
répertoire.
L'avantage de l'utilisation de la solution ci-dessus est qu'elle fonctionne pour toutes les commandes curl
, mais elle n'est pas recommandée car elle peut introduire attaques MITM en se connectant à des hôtes non sécurisés et non fiables.
Vous utilisez un certificat auto-signé. Pourquoi ne pas ajouter l'autorité de certification à votre ensemble d'autorités de confiance (Linux) ou l'ajouter au magasin de certificats approuvé (Windows)? Ou utilisez simplement --cacert /Path/to/file
avec le contenu de votre fichier de certificat auto-signé de confiance.
Les autres réponses répondent à la question sur la base du wget
comparable. Cependant, la vraie question est de savoir comment maintenir une connexion sécurisée avec un certificat auto-signé en utilisant curl
. Sur la base de nombreux commentaires, la sécurité est la principale préoccupation dans l'une de ces réponses, et la meilleure réponse serait de faire confiance au certificat auto-signé et de laisser les contrôles de sécurité de curl
s intacts.