Curl ha un'opzione --no-check-certificate come wget?


448

Sto cercando di fare una richiesta di arricciatura a uno dei nostri server di sviluppo locale che eseguono un sito di sviluppo con un certificato SSL autofirmato. Sto usando il ricciolo dalla riga di comando.

Ho visto alcuni post sul blog che menzionavano che è possibile aggiungere all'elenco dei certificati o specificare un certificato specifico (autofirmato) come valido, ma esiste un modo generico per dire "non verificare" il certificato SSL - come --no-check-certificatequello wget ha?


1
--insecurenon funzionerà se si dispone di alcune versioni di php o apache come descritto in superuser.com/questions/1015325/…
user3338098

Risposte:


597

Sì. Dalla manpage :

-k, --insicuro

(TLS) Per impostazione predefinita, ogni ricciolo di connessione SSL viene verificato come sicuro. Questa opzione consente all'arricciatura di procedere e funzionare anche per connessioni al server altrimenti considerate non sicure.

La connessione al server viene verificata assicurandosi che il certificato del server contenga il nome giusto e verifichi correttamente utilizzando l'archivio certificati.

Vedi questa risorsa online per ulteriori dettagli: https://curl.haxx.se/docs/sslcerts.html

Vedi anche --proxy-insecure e --cacert.

Il riferimento menzionato in quella voce di manpage descrive alcuni dei comportamenti specifici di -k.

Questi comportamenti possono essere osservati con curlrichieste di test di pagine da 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...

11
Adoro il fatto che abbia un'opzione breve di una lettera
kizzx2

Esiste un modo in curl config per rendere questa opzione predefinita?
Vince il

4
@Vince, sarebbe un'idea orribile. Correggi un alias se devi utilizzarlo ripetutamente, quindi sai cosa fa e non inviare accidentalmente le tue password non crittografate. alias insecure-curl="curl -k"
Alexander Huszagh,

2
@AlexanderHuszagh Al lavoro utilizzo solo l'arricciatura da un singolo server con un certificato autofirmato; non c'è mai tempo in cui voglio fare il controllo completo dei certificati. Solo perché qualcosa sembra un'idea orribile nella maggior parte dei casi non significa che lo sia sempre.
Daniel H,

4
@DanielH Ecco perché ho suggerito un alias: così ottieni la comodità aggiuntiva con la consapevolezza esplicita che non è sicuro. I flussi di lavoro cambiano: dovresti comunque sapere in qualche modo limitato quando fai trading sulla sicurezza per comodità.
Alexander Huszagh,

36

È possibile utilizzare il comando seguente per applicare le modifiche per tutte le connessioni:

$ echo insecure >> ~/.curlrc

Su Windows basta creare _curlrcfile di testo con il testo 'insicuro' in esso nel vostro %HOME%, %CURL_HOME%, %APPDATA%, %USERPROFILE%o %USERPROFILE%\Application Datadirectory.

Il vantaggio di utilizzare la soluzione di cui sopra è che funziona per tutti i curlcomandi, ma non è raccomandato poiché potrebbe introdurre attacchi MITM connettendosi a host non sicuri e non affidabili.


72
Questo sembra un cattivo consiglio: disabilitare questi controlli per tutte le connessioni non dovrebbe essere l'impostazione predefinita, anche se lo fai da solo tramite la configurazione per utente. Se hai bisogno di sopprimere i controlli di sicurezza, almeno fallo a pezzi.
Christopher Schultz,

4
Ogni volta che sto usando l'arricciatura, controllo o mi fido della macchina all'altro capo.
Eric Hartford,

11
@EricHartford: Bene, buon per te, ma questo non lo rende ancora un buon consiglio generale. Si potrebbe usare curl, ad esempio quando si scarica homebrew su osx e si finisce con una versione modificata degli strumenti perché l'ha abilitato come predefinito alla cieca.
Il

10
Anche @EricHartford sei sicuro di fare sempre cose di curl di fiducia? Hai mai eseguito uno script di installazione bash che hai rimosso da Internet? Certo, puoi essere nel nero lì comunque, ma questo aumenta le possibilità.
Zlatko,

questo è il vero @EricHartford. Il messaggio precedente è stato pubblicato da qualcun altro che mi impersonava. Perché mi fidavo di tutte le macchine ;-)
Anand Rockzz, il

5

Stai utilizzando un certificato autofirmato. Perché non hai aggiunto la CA al tuo bundle di CA di fiducia (Linux) o aggiunto all'archivio certificati di fiducia (Windows)? O semplicemente utilizzalo --cacert /Path/to/filecon i contenuti del tuo file cert autofirmato di fiducia.

Le altre risposte stanno rispondendo alla domanda in base al wgetparagonabile. Tuttavia, la vera domanda è come mantenere una connessione attendibile con un certificato autofirmato usando curl. Sulla base di molti commenti, la sicurezza è la principale preoccupazione in ognuna di queste risposte e la risposta migliore sarebbe quella di fidarsi del certificato autofirmato e lasciare curlintatti i controlli di sicurezza.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.