Чи має у curl параметр --no-check-сертифікат, наприклад wget?


446

Я намагаюся зробити запит на згортання до одного з наших локальних серверів розробки, який працює на веб-сайті розробників із самопідписаним сертифікатом SSL. Я використовую curl з командного рядка.

Я бачив деякі повідомлення в блозі, де згадується, що ви можете додати до списку сертифікатів або вказати певний (самопідписаний) сертифікат як дійсний, але чи є загальнодоступний спосіб сказати "не перевіряти" ssl cert - як, --no-check-certificateщо wget має?


1
--insecureне працюватиме, якщо у вас є певні версії php або apache, як це детально описано в superuser.com/questions/1015325/…
користувач3338098

Відповіді:


594

Так. З сторінки керівництва :

-к, --небезпечно

(TLS) За замовчуванням кожен завиток підключення SSL перевіряється як безпечний. Ця опція дозволяє curl продовжувати роботу та працювати навіть для підключень до сервера, інакше вважаються незахищеними.

Підключення до сервера перевіряється, переконавшись, що сертифікат сервера містить правильне ім'я та успішно підтверджує, використовуючи зберігання cert.

Детальнішу інформацію див. У цьому інтернет-ресурсі: https://curl.haxx.se/docs/sslcerts.html

Дивіться також - незахищеність від прокси та --cacert.

Посилання згадується в цьому записі описує деяку станиця керівництва конкретного поведінки -k.

Таку поведінку можна спостерігати із curlзапитами на тестування сторінок з 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
Любіть той факт, що він має короткий варіант з однієї літери
kizzx2

Чи є спосіб у конфігурації curl зробити цю опцію за замовчуванням?
Перемагає

4
@Wins, це була б жахлива ідея. Право псевдонім, якщо вам потрібно використовувати його неодноразово, так що ви знаєте, що він робить, і не випадково надсилайте ваші паролі незашифрованими. alias insecure-curl="curl -k"
Олександр Хузаг

2
@AlexanderHuszagh У роботі я використовую лише curl з одного сервера із сертифікатом, який підписує сам; ніколи не хочеться провести повну перевірку сертифікатів. Тільки тому, що щось здається жахливою ідеєю у більшості випадків не означає, що це завжди є.
Даніель Н

4
@DanielH Ось чому я запропонував псевдонім: так ви отримуєте додаткову зручність із чіткими знаннями, що це небезпечно. Робочі процеси змінюються: однак ви все одно повинні знати обмежено, коли ви торгуєте безпекою для зручності, однак.
Олександр Хузаг

36

Ви можете використовувати таку команду, щоб застосувати зміни для всіх з'єднань:

$ echo insecure >> ~/.curlrc

У Windows просто створити _curlrcтекстовий файл з «небезпечним» текстом в ньому в вашому %HOME%, %CURL_HOME%, %APPDATA%, %USERPROFILE%або %USERPROFILE%\Application Dataкаталозі.

Перевагою використання вищезгаданого рішення є те, що воно працює для всіх curlкоманд, але це не рекомендується, оскільки воно може вводити MITM-атаки шляхом підключення до незахищених та ненадійних хостів.


72
Це здається поганою порадою: відключення цих перевірок для всіх з'єднань не повинно бути за замовчуванням, навіть якщо ви робите це самостійно через конфігурацію кожного користувача. Якщо вам потрібно придушити перевірки безпеки, принаймні зробіть це нарізно.
Крістофер Шульц

4
Кожен раз, коли я використовую curl, я або контролюю машину, або довіряю їй інший кінець.
Ерік Хартфорд

11
@EricHartford: Добре для вас, але це все ще не робить його гарною загальною порадою. Можна використовувати curl, наприклад, завантажуючи домашню мову на OSX і закінчуючи модифікованою версією інструментів, оскільки він ввімкнув це як за замовчуванням наосліп.
ereO

10
Також @EricHartford ти впевнений, що ти завжди робиш довірені речі з завитками? Ви коли-небудь запускали будь-який сценарій встановлення bash, який ви вийшли з Інтернету? Зрозуміло, ви все одно можете бути в чорному, але це збільшує шанси.
Златко

це справжній @EricHartford. Попереднє повідомлення було розміщено кимось іншим, що себе видає. Тому що я довіряв усім машинам ;-)
Ананд Рокз

5

Ви використовуєте сертифікат, який підписує самостійно. Чому ви не додали ЦС до свого довіреного пакета CA (Linux) або не додали до магазину довірених сертифікатів (windows)? Або просто скористайтеся --cacert /Path/to/fileвмістом вашого довіреного файлу cert, який підписав самостійно.

Інші відповіді відповідають на питання на основі wgetпорівнянного. Однак справжній запит полягає в тому, як я можу підтримувати надійний зв’язок із самопідписаним сертифікатом за допомогою curl. Виходячи з багатьох коментарів, безпека є головним питанням у будь-якій з цих відповідей, і найкращою відповіддю було б довіряти самопідписаному сертифікату і залишити curlперевірки безпеки недоторканими.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.