Czy curl ma opcję --no-check-certificate, taką jak wget?


446

Usiłuję złożyć wniosek o zwinięcie do jednego z naszych lokalnych serwerów programistycznych obsługujących witrynę programistyczną z samopodpisanym certyfikatem SSL. Używam curl z wiersza poleceń.

Widziałem kilka postów na blogu, w których wspomniano, że można dodać do listy certyfikatów lub określić konkretny (samopodpisany) certyfikat jako ważny, ale czy istnieje ogólny sposób na powiedzenie „nie weryfikuj” certyfikatu ssl - podobnie jak --no-check-certificateten Wget ma?


1
--insecurenie będzie działać, jeśli masz pewne wersje php lub apache, jak wyszczególniono w superuser.com/questions/1015325/…
— user3338098,

Odpowiedzi:


594

Tak. Z strony podręcznika :

-k, - niezabezpieczone

(TLS) Domyślnie każde zawinięcie połączenia SSL jest sprawdzane pod kątem bezpieczeństwa. Ta opcja umożliwia kontynuowanie i działanie curl nawet w przypadku połączeń z serwerami, które w innym przypadku są uważane za niebezpieczne.

Połączenie z serwerem jest weryfikowane przez upewnienie się, że certyfikat serwera zawiera prawidłową nazwę i pomyślnie weryfikuje przy użyciu magazynu certyfikatów.

Zobacz ten zasób online, aby uzyskać więcej informacji: https://curl.haxx.se/docs/sslcerts.html

Zobacz także --proxy-niepewne i --cacert.

Odniesienia wymienionych w tej pozycji dokument opisuje niektóre z określonych zachowań -k.

Zachowania te można zaobserwować w przypadku curlpróśb o przetestowanie stron z 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
Uwielbiam fakt, że ma krótką literę
— kizzx2

Czy jest jakiś sposób w konfiguracji curl, aby ustawić tę opcję jako domyślną?
— Wygrywa

4
@Wins, to byłby okropny pomysł. Popraw alias, jeśli chcesz go używać wielokrotnie, abyś wiedział, co robi, i nie wysyłaj przypadkowo haseł bez szyfrowania. alias insecure-curl="curl -k"
— Alexander Huszagh,

2
@AlexanderHuszagh W pracy używam curl tylko z jednego serwera z certyfikatem z podpisem własnym; nigdy nie chcę przeprowadzać pełnego sprawdzania certyfikatu. To, że w większości przypadków coś wydaje się okropnym pomysłem, nie oznacza, że ​​zawsze tak jest.
— Daniel H

4
@DanielH Właśnie dlatego zasugerowałem alias: dzięki czemu zyskujesz dodatkową wygodę z wyraźną świadomością, że jest niepewny. Przepływy pracy się zmieniają: powinieneś jednak wiedzieć w pewien ograniczony sposób, kiedy handlujesz zabezpieczeniami dla wygody.
— Alexander Huszagh

36

Możesz zastosować następujące polecenie, aby zastosować zmiany dla wszystkich połączeń:

$ echo insecure >> ~/.curlrc

W systemie Windows po prostu utworzyć _curlrcplik tekstowy z „niepewnego” tekst w niej w Twoim %HOME%, %CURL_HOME%, %APPDATA%, %USERPROFILE%lub %USERPROFILE%\Application Datakatalogu.

Zaletą zastosowania powyższego rozwiązania jest to, że działa ono dla wszystkich curlpoleceń, ale nie jest zalecane, ponieważ może wprowadzać ataki MITM , łącząc się z niepewnymi i niezaufanymi hostami.


72
To wydaje się złą radą: wyłączenie tych kontroli dla wszystkich połączeń nie powinno być domyślnym, nawet jeśli zrobisz to sam przez konfigurację dla poszczególnych użytkowników. Jeśli chcesz znieść kontrole bezpieczeństwa, przynajmniej zrób to fragmentarycznie.
— Christopher Schultz

4
Za każdym razem, gdy używam curl, albo kontroluję maszynę na drugim końcu albo ufam jej.
— Eric Hartford,

11
@EricHartford: Cóż, dobrze dla ciebie, ale to nie czyni z tego dobrej ogólnej porady imho. Można użyć curl, na przykład podczas pobierania homebrew na osx i skończyć ze zmodyfikowaną wersją narzędzi, ponieważ włączono to jako domyślnie ślepo.
— ereOn

10
Również @EricHartford, czy jesteś pewien, że zawsze robisz zaufane curl? Czy kiedykolwiek uruchomiłeś jakiś skrypt instalacyjny bash, który masz poza Internetem? To prawda, że ​​i tak możesz być w czerni, ale to zwiększa szanse.
— Zlatko

to jest prawdziwy @EricHartford. Poprzednia wiadomość została opublikowana przez kogoś, kto podszywa się pode mnie. Ponieważ ufałem wszystkim maszynom ;-)
— Anand Rockzz

5

Używasz certyfikatu z podpisem własnym. Dlaczego nie dołączyłeś urzędu certyfikacji do zaufanego pakietu urzędu certyfikacji (Linux) ani nie dodałeś go do zaufanego magazynu certyfikatów (Windows)? Lub po prostu użyj --cacert /Path/to/filez zawartością zaufanego samopodpisanego pliku certyfikatu.

Inne odpowiedzi odpowiadają na pytanie w oparciu o wgetporównywalne. Jednak prawdziwe pytanie brzmi: w jaki sposób utrzymywać zaufane połączenie za pomocą certyfikatu z podpisem własnym curl. Opierając się na wielu komentarzach, bezpieczeństwo jest najważniejszą kwestią w każdej z tych odpowiedzi, a najlepszą odpowiedzią byłoby zaufanie samopodpisanemu certyfikatowi i pozostawienie curlkontroli bezpieczeństwa nienaruszonych.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.