Як виправити помилки сертифіката під час запуску wget за URL-адресою HTTPS у Cygwin?


164

Наприклад, запуск wget https://www.dropbox.comрезультатів у таких помилках:

ERROR: The certificate of `www.dropbox.com' is not trusted.
ERROR: The certificate of `www.dropbox.com' hasn't got a known issuer.

Відповіді:


131

Дивлячись на поточні хакі-рішення тут, я відчуваю, що мушу описати правильне рішення.

Спочатку для встановлення ca-certificatesсертифікатів потрібно встановити пакет cygwin через налаштування Cygwin's setup.exe.

НЕ використовуйте curl або подібні хаки для завантаження сертифікатів (як сусідні поради щодо відповідей), оскільки це в основному не є безпечним і може поставити під загрозу систему.

По-друге, вам потрібно повідомити wget, де ваші сертифікати, оскільки він не забирає їх за замовчуванням у середовищі Cygwin. Якщо ви можете зробити це або за допомогою параметра командного рядка --ca-directory=/usr/ssl/certs(найкраще для скриптів оболонки), або додавши ca_directory = /usr/ssl/certsу ~/.wgetrcфайл.

Ви також можете це виправити, запустивши, ln -sT /usr/ssl /etc/sslяк зазначено в іншій відповіді, але це буде працювати лише в тому випадку, якщо у вас є адміністративний доступ до системи. Інші описані нами рішення цього не потребують.


5
Дякуємо за цю відповідь, а особливо за нагадування про файл ~ / .wgetrc. Як користувач MacPorts, мої серти розташовані за адресою / opt / local / etc / openssl, факт, який, сподіваюся, комусь стане в нагоді.
Брайс Андерсон

3
І, на завершення, вони знаходяться в /sw/etc/ssl/certs/ca-bundle.crt, який входить до складу ca-bundleпакету - як описано тут .
jhfrontz

Не впевнений, чи це помилка, але ln -s /etc/ssl /usr/sslпрацював на мене.
zkent

240

Якщо ви не переймаєтесь справжністю сертифіката, просто додайте --no-check-certificateпараметр у командному рядку wget. Це добре спрацювало для мене.

ПРИМІТКА. Це відкриває вас для атаки "посеред" (MitM), і не рекомендується для будь-яких випадків, коли ви дбаєте про безпеку.


1
Це працювало для мене. Інші рішення щодо встановлення та оновлення сертифікатів не вирішили. У моєму конкретному випадку немає проблем з безпекою.
березень

103

Якщо проблема полягає в тому, що відомого кореневого СА відсутня і коли ви використовуєте ubuntu або debian, ви можете вирішити проблему за допомогою цього рядка:

sudo apt-get install ca-certificates

1
apt-get є на cygwin? apt-get є на redgat? ;)
Денис Чену

5
ca-сертифікати вже встановлені на моєму комп’ютері. Біг update-ca-certificatesвирішив проблему.
Томаш Фокс

Це також працювало на моїй Synology DS215j з Debian chroot.
мікроспіно

@fox update-ca-certificates- це команда ubuntu, недоступна в debian.
Devy

@Devy Це насправді працювало на моєму малиновому пі, що працює на Debian wheezy
Луїс Лобо Боробія

13

По-перше, потрібно встановити сертифікати SSL. Інструкції (на основі https://stackoverflow.com/a/4454754/278488 ):

pushd /usr/ssl/certs
curl http://curl.haxx.se/ca/cacert.pem | awk 'split_after==1{n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}'
c_rehash

Вищезазначеного достатньо для виправлення curl, але wgetвимагає додаткового символьного посилання:

ln -sT /usr/ssl /etc/ssl

6
Хіба це не є небезпечним для встановлення кореневих сертифікатів з випадкового веб-сайту, особливо з ім'ям haxx?
Хлоя

6
@Chloe curl.haxx.se - це розробка сайту CURL. Дуже довірливі люди.
іллюмінат

як це виправити без завитка?
Марк Лаката

1
omfg симпосилання було те, що я пропустив ... шукав 30 хвилин для виправлення 1 вкладиша> <
Populus

4
Це хакі на кількох рівнях. По-перше, вам не потрібно завантажувати сертифікати вручну, оскільки для цього є пакет Cygwin, який називається "ca-сертифікати". По-друге, посилання буде працювати лише в тому випадку, якщо у вас є адміністративний доступ до системи або ви встановили cygwin лише для свого облікового запису користувача, що не завжди так, тому код не є надійним.
Шнацель

10

Можливо, це допоможе:

wget --no-check-certificate https://blah-blah.tld/path/filename

1
Ще одне: Ця ситуація також можлива, якщо ви використовуєте Kaspersky AntiVirus або такий же софт (за замовчуванням він замінює звичайний перевірений SSL сертифікат сайту на свій власний) - отже, ви можете відключити перевірку SSL-трафіку у програмі Antivirus.
Олексій Соловйов

4
apt-get install ca-certificates 

sРобить різницю;)


У apt-getcygwin немає , тому це не працює.
jlh

1

У мене є аналогічна проблема і виправлена, тимчасово відключивши антивірус (Kaspersky Free 18.0.0.405). Цей AV має модуль перехоплення HTTPS, який автоматично підписує всі сертифікати, знайдені у відповідях HTTPS.

Wget від Cygwin нічого не знає про кореневий сертифікат AV, тому, коли виявить, що сертифікат веб-сайту був підписаний з недовірчим сертифікатом, він виводить цю помилку.

Щоб виправити це назавжди, не вимикаючи AV, слід скопіювати кореневий сертифікат AV з магазину сертифікатів Windows у /etc/pki/ca-trust/source/anchorsформат .pem (кодування base64) та запуститиupdate-ca-trust



-4

Якщо ви використовуєте Windows, просто перейдіть на панель керування, натисніть на автоматичні оновлення та натисніть на посилання Веб-сайт Windows Update. Просто виконайте крок. Принаймні, це працює для мене, більше не видавати сертифікати, тобто коли я переходжу на https://www.dropbox.com, як раніше.


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