Наприклад, запуск 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.
Наприклад, запуск 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.
Відповіді:
Дивлячись на поточні хакі-рішення тут, я відчуваю, що мушу описати правильне рішення.
Спочатку для встановлення 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
як зазначено в іншій відповіді, але це буде працювати лише в тому випадку, якщо у вас є адміністративний доступ до системи. Інші описані нами рішення цього не потребують.
ln -s /etc/ssl /usr/ssl
працював на мене.
Якщо ви не переймаєтесь справжністю сертифіката, просто додайте --no-check-certificate
параметр у командному рядку wget. Це добре спрацювало для мене.
ПРИМІТКА. Це відкриває вас для атаки "посеред" (MitM), і не рекомендується для будь-яких випадків, коли ви дбаєте про безпеку.
Якщо проблема полягає в тому, що відомого кореневого СА відсутня і коли ви використовуєте ubuntu або debian, ви можете вирішити проблему за допомогою цього рядка:
sudo apt-get install ca-certificates
update-ca-certificates
вирішив проблему.
update-ca-certificates
- це команда ubuntu, недоступна в debian.
По-перше, потрібно встановити сертифікати 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
Можливо, це допоможе:
wget --no-check-certificate https://blah-blah.tld/path/filename
У мене є аналогічна проблема і виправлена, тимчасово відключивши антивірус (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
Просто роби
apt-get install ca-certificate
Якщо ви використовуєте Windows, просто перейдіть на панель керування, натисніть на автоматичні оновлення та натисніть на посилання Веб-сайт Windows Update. Просто виконайте крок. Принаймні, це працює для мене, більше не видавати сертифікати, тобто коли я переходжу на https://www.dropbox.com, як раніше.