Как исправить ошибки сертификата при запуске wget на HTTPS URL в Cygwin?


например,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.
8 144

8 ответов:

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

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

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

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

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

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

Примечание: это открывает вам До человек-в-середине (MitM) атак, и не рекомендуется ни для чего, где вы заботитесь о безопасности.

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

sudo apt-get install ca-certificates

во-первых, необходимо установить 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
apt-get install ca-certificates 

The s имеет значение;)

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

apt-get install ca-certificate

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

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

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