web-dev-qa-db-fra.com

Curl a-t-il une option --no-check-certificate comme wget?

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?

500
cwd

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...
657
Freiheit

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.

36
kenorb

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 curls intacts.

8
user3258557