Hat curl eine --no-check-certificate Option wie wget?

446

Ich versuche, eine Curl-Anfrage an einen unserer lokalen Entwicklungsserver zu richten, auf dem eine Entwickler-Site mit einem selbstsignierten SSL-Zertifikat ausgeführt wird. Ich benutze Locken von der Kommandozeile.

Ich sah einige Blog - Posts zu erwähnen , dass Sie in der Liste der Zertifikate hinzufügen oder ein bestimmtes (selbst signierten) Zertifikat als gültig angeben, aber gibt es eine allumfassende Art zu sagen , das SSL - Zertifikat „nicht verifiziert“ - wie die --no-check-certificateDASS wget hat?

cwd
quelle
1
--insecureWenn Sie eine bestimmte Versionen von PHP oder Apache haben nicht funktioniert , wie ausführlich in superuser.com/questions/1015325/...
user3338098

Antworten:

595

Ja. Aus der Manpage :

-k, --unsicher

(TLS) Standardmäßig wird überprüft, ob alle SSL-Verbindungscurls sicher sind. Mit dieser Option kann Curl fortgesetzt und auch für Serververbindungen verwendet werden, die ansonsten als unsicher gelten.

Die Serververbindung wird überprüft, indem sichergestellt wird, dass das Serverzertifikat den richtigen Namen enthält, und mithilfe des Zertifikatspeichers erfolgreich überprüft wird.

Weitere Informationen finden Sie in dieser Online-Ressource: https://curl.haxx.se/docs/sslcerts.html

Siehe auch --proxy-insecure und --cacert.

Die in diesem Manpage-Eintrag erwähnte Referenz beschreibt einige der spezifischen Verhaltensweisen von -k.

Dieses Verhalten kann bei curlAnfragen zum Testen von Seiten von BadSSL.com beobachtet werden

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
quelle
11
Ich
Gibt es in der Curl-Konfiguration eine Möglichkeit, diese Option als Standard festzulegen?
Gewinnt am
4
@Wins, das wäre eine schreckliche Idee. Richten Sie einen Alias ​​ein, wenn Sie ihn wiederholt verwenden müssen, damit Sie wissen, was er bewirkt, und Ihre Passwörter nicht versehentlich unverschlüsselt senden. alias insecure-curl="curl -k"
Alexander Huszagh
2
@AlexanderHuszagh Bei der Arbeit verwende ich nur Curl von einem einzelnen Server mit einem selbstsignierten Zertifikat. Es gibt keine Zeit, in der ich eine vollständige Zertifikatsprüfung durchführen möchte. Nur weil etwas in den meisten Fällen wie eine schreckliche Idee aussieht, heißt das nicht, dass es immer so ist.
Daniel H
4
@DanielH Aus diesem Grund habe ich einen Alias ​​vorgeschlagen: So erhalten Sie den zusätzlichen Komfort mit dem ausdrücklichen Wissen, dass es unsicher ist. Workflows ändern sich: Sie sollten jedoch in begrenztem Umfang wissen, wann Sie aus Bequemlichkeitsgründen mit Sicherheit handeln.
Alexander Huszagh
36

Sie können den folgenden Befehl verwenden, um die Änderungen für alle Verbindungen zu übernehmen:

$ echo insecure >> ~/.curlrc

Unter Windows einfach erstellen _curlrcTextdatei mit ‚unsicheren‘ Text in es in Ihrem %HOME%, %CURL_HOME%, %APPDATA%, %USERPROFILE%oder %USERPROFILE%\Application DataVerzeichnis.

Die Verwendung der obigen Lösung hat den Vorteil, dass sie für alle curlBefehle funktioniert , wird jedoch nicht empfohlen, da sie möglicherweise MITM-Angriffe auslöst, wenn eine Verbindung zu unsicheren und nicht vertrauenswürdigen Hosts hergestellt wird.

Kenorb
quelle
72
Dies scheint ein schlechter Rat zu sein: Das Deaktivieren dieser Überprüfungen für alle Verbindungen sollte nicht die Standardeinstellung sein, auch wenn Sie dies selbst über die Benutzerkonfiguration tun. Wenn Sie Sicherheitsüberprüfungen unterdrücken müssen, tun Sie dies zumindest schrittweise.
Christopher Schultz
4
Immer wenn ich Locken benutze, kontrolliere oder vertraue ich der Maschine am anderen Ende.
Eric Hartford
11
@ EricHartford: Nun, gut für dich, aber das macht es immer noch nicht zu einem guten allgemeinen Rat, imho. Man könnte curl verwenden, wenn man zum Beispiel Homebrew auf OSX herunterlädt und am Ende eine modifizierte Version der Tools hat, weil er dies blind als Standard aktiviert hat.
ereOn
10
Auch @EricHartford sind Sie sicher, dass Sie immer vertrauenswürdige Curl-Sachen machen? Haben Sie jemals ein Bash-Installationsskript ausgeführt, das Sie aus dem Internet entfernt haben? Zugegeben, Sie können dort ohnehin schwarze Zahlen schreiben, aber das erhöht die Chancen.
Zlatko
das ist der echte @EricHartford. Die vorherige Nachricht wurde von jemand anderem gepostet, der sich als ich ausgab. Weil ich allen Maschinen vertraut habe ;-)
Anand Rockzz
5

Sie verwenden ein selbstsigniertes Zertifikat. Warum haben Sie die Zertifizierungsstelle nicht an Ihr Paket vertrauenswürdiger Zertifizierungsstellen (Linux) angehängt oder dem vertrauenswürdigen Zertifikatspeicher (Windows) hinzugefügt? Oder verwenden Sie einfach --cacert /Path/to/fileden Inhalt Ihrer vertrauenswürdigen selbstsignierten Zertifizierungsdatei.

Die anderen Antworten beantworten die Frage anhand des wgetVergleichbaren. Die wahre Frage ist jedoch, wie ich mit einem selbstsignierten Zertifikat eine vertrauenswürdige Verbindung aufrechterhalte curl. Basierend auf vielen Kommentaren ist Sicherheit das Hauptanliegen in jeder dieser Antworten. Die beste Antwort wäre, dem selbstsignierten Zertifikat zu vertrauen und die curlSicherheitsüberprüfungen intakt zu lassen.

user3258557
quelle