Как исправить ошибки сертификата при запуске 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

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

Во-первых, вам нужно установить пакет cygwin ca-certificatesчерез Cygwin setup.exe, чтобы получить сертификаты.

НЕ ИСПОЛЬЗУЙТЕ скручивание или аналогичные методы взлома для загрузки сертификатов (как совет соседнего ответа), потому что это принципиально небезопасно и может поставить под угрозу систему.

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

Вы также можете исправить это, выполнив, ln -sT /usr/ssl /etc/sslкак указано в другом ответе, но это будет работать, только если у вас есть административный доступ к системе. Другие решения, которые я описал, не требуют этого.

Shnatsel
источник
5
Спасибо за этот ответ, и особенно за напоминание о файле ~ / .wgetrc. Как пользователь MacPorts, мои сертификаты находятся в / opt / local / etc / openssl, и я надеюсь, что кто-то найдет это полезным.
Брайс Андерсон
3
И для fink, они находятся в /sw/etc/ssl/certs/ca-bundle.crt, который входит в ca-bundleпакет - как описано здесь .
Jhfrontz
Не уверен, что это опечатка, но ln -s /etc/ssl /usr/sslработал на меня.
zkent
240

Если вам не нужно проверять действительность сертификата, просто добавьте --no-check-certificateпараметр в командной строке wget. Это хорошо сработало для меня.

ПРИМЕЧАНИЕ. Это открывает доступ к атакам типа «человек посередине» и не рекомендуется ни для чего, где вы заботитесь о безопасности.

DH4
источник
1
Это сработало для меня. Другие решения, касающиеся установки и обновления сертификатов, не помогли. В моем конкретном случае нет проблем с безопасностью.
marlar
103

Если проблема в том, что известный корневой CA отсутствует, и когда вы используете Ubuntu или Debian, вы можете решить проблему с помощью одной строки:

sudo apt-get install ca-certificates
cguenther
источник
1
apt-get находится на cygwin? apt-get находится на redgat? ;)
Денис Чену
5
CA-сертификаты уже были установлены на моем компьютере. Бег update-ca-certificatesрешил проблему.
Томас Фокс
Это также работало на моем Synology DS215j с Debian chroot.
microspino
@fox update-ca-certificates- это команда Ubuntu, недоступная в Debian.
Деви
@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-Certificates. Во-вторых, символическая ссылка будет работать, только если у вас есть административный доступ к системе или вы установили cygwin только для своей учетной записи, что не всегда так, поэтому код не является надежным.
Шнацель
10

Может быть, это поможет:

wget --no-check-certificate https://blah-blah.tld/path/filename
Алексей Соловьев
источник
1
Еще одно: эта ситуация также возможна, если вы используете Антивирус Касперского или тот же софт (по умолчанию он заменяет собственный проверенный SSL-сертификат сайта на собственный) - так что вы можете отключить проверку трафика SSL в софте Антивирус.
Алексей Соловьев
4
apt-get install ca-certificates 

Чем sразница;)

Пит
источник
Нет apt-getв Cygwin, так что это не работает.
июля
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

Денис Бахарев
источник
-2

Просто сделать

apt-get install ca-certificate
tekintian
источник
-4

Если вы используете Windows, просто перейдите на панель управления, нажмите на автоматические обновления, а затем нажмите на ссылку веб-сайта Центра обновления Windows. Просто следуйте за шагом. По крайней мере, это работает для меня, больше не выдача сертификатов, т. Е. Всякий раз, когда я иду на https://www.dropbox.com, как раньше.

Saiful
источник
Это не связано с Cygwin
Synthead