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

14 ответов

Решение

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

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

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

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

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

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

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

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

sudo apt-get install ca-certificates

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

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

Во-первых, необходимо установить сертификаты SSL. Инструкции (на основе /questions/46370743/sertifikat-ssl-otklonen-pri-popyitke-dostupa-k-github-cherez-https-cherez-brandmauer/46371053#46371053):

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 

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

У меня похожая проблема, и я исправил ее, временно отключив антивирус (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

В моем случае на raspberry pi 3B время было в будущем (2025), которое мне нужно обновить до текущего местного времени, используя ntpdateпередав время в прошлое, и это решило проблему.

       $ sudo date +%Y%m%d -s "20210101"
 $ sudo ntpdate times1.mike.fi

Благодаря Денису Бахареву я раскрыл это дело.

Если у кого-то Cygwin wget не работает из-за того, что «сертификат не доверен» и у него установлены CA-сертификаты И антивирус, который автоматически подписывает все сертификаты, которые он находит в ответах HTTPS, вам нужно:

  1. Получите корневой сертификат от вашего AV (я получил свой с помощью браузера: откройте любой веб-сайт https, проверьте его сертификат, перейдите на Certification Pathвкладку, щелкните Корневой сертификат. Затем нажмите View certificateкнопка, перейти к Detailsвкладку и нажмите Copy to File...кнопка. Настройки по умолчанию подходят для сохранения сертификата в файле *.cer).
  2. Преобразование *.cer в *.crt. Вы можете использовать OpenSSL Cygwin с помощью следующей команды:

openssl x509 -inform DER -in <your *.cer certificate file> -out <new cert>.crt

  1. Переместите новый файл *.crt в каталог ca (в моем случае это был /etc/pki/tls/certs/).

Этого было достаточно, чтобы заставить wget работать.

У нас возникла такая же проблема, когда мы установили новый сертификат только на прошлой неделе. Я также видел это еще два раза ... но я медленно учусь. Во всех трех случаях мне приходилось получать «промежуточные сертификаты» и устанавливать их. Другими словами, мой сертификат был хорош, но его подписывающая сторона или подписывающая сторона была установлена ​​неправильно. Убедитесь, что вы зашли на сайт поставщика сертификатов, получили правильные промежуточные сертификаты и также установили их на свой сервер, после чего это предупреждение исчезнет.

Это может быть НЕ ПРОСТО, как указано выше, также может быть, что у клиентов нет обновленных списков ... но я хотел бы убедиться, что это не просто вы не полностью устанавливаете сертификаты правильно ПЕРВЫЙ, а затем после этого переходите к клиентам и убедиться, что их список обновлен.

У меня была аналогичная проблема с wget на моем собственном веб-сайте, возвращающем ошибки после установки нового сертификата SSL. Я уже проверил несколько браузеров, и они не сообщали об ошибках:

wget --no-cache -O - "https://example.com/..." ERROR: The certificate of ‘example.com’ is not trusted. ERROR: The certificate of ‘example.com’ hasn't got a known issuer.

Проблема заключалась в том, что я установил неправильный файл центра сертификации.pem /.crt от эмитента. Обычно они объединяют сертификат SSL и файл CA в виде zip-файла, но DigiCert отправляет вам сертификат по электронной почте, и вы должны самостоятельно определить соответствующий CA. https://www.digicert.com/help/ имеет средство проверки сертификатов SSL, в котором перечислены полномочия SSL и, надеюсь, соответствующий ЦС с красивой синей графикой ссылки, если они согласны:

`SSL Cert: Issuer GeoTrust TLS DV RSA Mixed SHA256 2020 CA-1

CA: Subject GeoTrust TLS DV RSA Mixed SHA256 2020 CA-1 Действителен с 16 июля 2020 г. по 31 мая 2023 г. Эмитент DigiCert Global Root CA`

Не совсем та же проблема. В докере я монтировал свою файловую систему хоста на /etcгде уже были установлены сертификаты OpenSSL, которые перезаписываются.

Изменение монтирования на другую файловую систему исправило это.

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

apt-get install ca-certificate

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

Другие вопросы по тегам