Est-ce que curl a une option --no-check-certificate comme wget?

448

J'essaie de faire une requête curl à l'un de nos serveurs de développement locaux exécutant un site de développement avec un certificat SSL auto-signé. J'utilise curl depuis la ligne de commande.

J'ai vu certains billets de blog mentionnant que vous pouvez ajouter à la liste des certificats ou spécifier un certificat spécifique (auto-signé) comme valide, mais existe-t-il un moyen fourre-tout de dire "ne vérifie pas" le certificat SSL - comme celui --no-check-certificatequi wget a?

cwd
la source
1
--insecurene fonctionnera pas si vous avez une certaine version de php ou apache, comme indiqué dans superuser.com/questions/1015325/…
user3338098

Réponses:

598

Oui. De la page de manuel :

-k, --insecure

(TLS) Par défaut, chaque connexion SSL établie est vérifiée pour être sécurisée. Cette option permet à curl de fonctionner et de fonctionner même pour des connexions de serveur autrement considérées non sécurisées.

La connexion du serveur est vérifiée en s'assurant que le certificat du serveur contient le bon nom et qu'il vérifie avec succès l'utilisation du 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.

La référence mentionnée dans cette entrée de page de manuel décrit certains comportements spécifiques de -k.

Ces comportements peuvent être observés avec des curldemandes 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...
Freiheit
la source
11
J'adore le fait qu'il ait une option courte pour une lettre
kizzx2
Existe-t-il un moyen dans curl config de rendre cette option par défaut?
Victoires
4
@Wins, ce serait une idée horrible. Adoptez un alias si vous devez l’utiliser de manière répétée pour savoir ce qu’il fait et ne pas envoyer accidentellement vos mots de passe non cryptés. alias insecure-curl="curl -k"
Alexander Huszagh
2
@AlexanderHuszagh Au travail, je n'utilise curl que d'un seul serveur avec un certificat auto-signé; il n'y a jamais une fois où je veux faire une vérification complète du certificat. Le simple fait que quelque chose semble être une idée horrible dans la plupart des cas ne signifie pas que cela le soit toujours.
Daniel H
4
@DanielH C'est pourquoi j'ai suggéré un alias: vous bénéficiez ainsi d'une commodité accrue en sachant explicitement qu'il n'est pas sécurisé. Les flux de travail changent: vous devez néanmoins savoir de manière limitée lorsque vous négociez la sécurité pour plus de commodité.
Alexander Huszagh
36

Vous pouvez utiliser la commande suivante pour appliquer les modifications à toutes les connexions:

$ echo insecure >> ~/.curlrc

Sous Windows il suffit de créer un _curlrcfichier texte texte « peu sûr » dans dans votre %HOME%, %CURL_HOME%, %APPDATA%, %USERPROFILE%ou %USERPROFILE%\Application Datarépertoire.

L'avantage d'utiliser la solution ci-dessus est que cela fonctionne pour toutes les curlcommandes, mais ce n'est pas recommandé car cela peut introduire des attaques MITM en se connectant à des hôtes non sécurisés et non sécurisés.

Kenorb
la source
72
Cela semble être un mauvais conseil: désactiver ces vérifications pour toutes les connexions ne devrait pas être la méthode par défaut, même si vous vous le faites via une configuration par utilisateur. Si vous devez supprimer les contrôles de sécurité, faites-le au moins à la pièce.
Christopher Schultz
4
Chaque fois que j'utilise curl, je contrôle ou fais confiance à la machine à l'autre bout.
Eric Hartford
11
@EricHartford: Bien pour vous, mais cela n'en fait pas pour autant un bon conseil général à mon humble avis. On peut utiliser curl, par exemple lors du téléchargement d’homebrew sur osx et se retrouver avec une version modifiée des outils car il l’a activé aveuglément par défaut.
ereOn
10
Également @EricHartford, êtes-vous sûr de toujours faire des trucs de confiance? Avez-vous déjà exécuté un script d'installation bash que vous avez obtenu sur Internet? Certes, vous pouvez être dans le noir de toute façon, mais cela augmente les chances.
Zlatko
c'est le vrai @ EricHartford. Le message précédent avait été posté par une autre personne se faisant passer pour moi. Parce que j'avais confiance en toutes les machines ;-)
Anand Rockzz
5

Vous utilisez un certificat auto-signé. Pourquoi n'ajoutez-vous pas l'autorité de certification à votre groupe d'autorités de certification approuvées (Linux) ou ne l'ajoutez pas au magasin de certificats de confiance (Windows)? Ou utilisez simplement --cacert /Path/to/filele contenu de votre fichier de certificat auto-signé de confiance.

Les autres réponses répondent à la question basée sur le wgetcomparable. Cependant, la vraie question est de savoir comment maintenir une connexion sécurisée avec un certificat auto-signé curl. Sur la base de nombreux commentaires, la sécurité est la principale préoccupation de l’une de ces réponses, et la meilleure solution serait de faire confiance au certificat auto-signé et de laisser curlles contrôles de sécurité intacts.

utilisateur3258557
la source