Неможливо локально підтвердити повноваження емітента


19

Я не в змозі відкрити будь-які https-адреси за допомогою wget або curl:

$ wget https://www.python.org
--2015-04-27 17:17:33--  https://www.python.org/
Resolving www.python.org (www.python.org)... 103.245.222.223
Connecting to www.python.org (www.python.org)|103.245.222.223|:443... connected.
ERROR: cannot verify www.python.org's certificate, issued by "/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA":
  Unable to locally verify the issuer's authority.
To connect to www.python.org insecurely, use '--no-check-certificate'.

$ curl https://www.python.org
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.

Для цього використовується wget 1,12 та curl 7.30.0 на CentOS 5.5. Здається, щось не так з моїм місцевим магазином сертифікатів, але я не маю уявлення, як діяти звідси. Будь-які ідеї?

Оновлення: Після оновлення пакета openssl з 0.9.8e-12.el5_4.6 до 0.9.8e-33.el5_11, тепер є інша помилка:

$ wget https://pypi.python.org
--2015-04-28 10:27:35--  https://pypi.python.org/
Resolving pypi.python.org (pypi.python.org)... 103.245.222.223
Connecting to pypi.python.org (pypi.python.org)|103.245.222.223|:443... connected.
ERROR: certificate common name "www.python.org" doesn't match requested host name "pypi.python.org".
To connect to pypi.python.org insecurely, use '--no-check-certificate'.

Я думаю, що кореневі сертифікати є в ca-certificatesпакеті. Цей пакет встановлений? Можливо, спробуйте перевстановити його. Якщо це не проблема, запустіть strace -o /tmp/wget.strace wget https://www.python.orgі опублікуйте отриманий слід, який повинен нам сказати, де проблема.
Жил "ТАК - перестань бути злим"

@Gilles - я оновив пакунок openssl з 0.9.8e-12.el5_4.6 до 0.9.8e-33.el5_11 і помилка пішла (можливо, це перевстановило кореневі сертифікати?), Але тепер є інша помилка.
aco

Це схоже на тимчасову помилку на цьому конкретному веб-сайті. Чи працюють інші сайти?
Жил "ТАК - перестань бути злим"

@Gilles - Інші веб-сайти також не працюють. Наприклад, Google повертає помилку: загальна назва сертифіката "google.com" не відповідає запитуваному імені хоста "www.google.com.au".
aco

Я можу виправити ту саму проблему, відключивши Selinux: crypt.gen.nz/selinux/disable_selinux.html Будьте здорові!

Відповіді:


4

Проблема - відсутність підтримки вказівки імені сервера. Вам потрібно принаймні wget 1.14 або curl 7.18.1, і вам потрібно принаймні OpenSSL 0.98f, згідно Вікіпедії:

https://en.wikipedia.org/wiki/Server_Name_Indication#Implementation


1
Я використовую: GNU Wget 1.19.4 і OpenSSL 1.1.1, і я все одно отримую ту ж помилку.
mchid

4

У мене була схожа помилка з https://excellmedia.dl.sourceforge.net/project/astyle/astyle/astyle%203.0.1/astyle_3.0.1_linux.tar.gz на зображенні докера (circleci / jdk8: 0.1. 1),

У моєму випадку оновлення ca-сертифікатів вирішило проблему:

sudo apt-get install ca-certificates

Дякую! Відмінно працював на Ubuntu 16.04. Мені довелося перевстановити сертифікати ca
Ubuntuser

2

wgetдо 1.14 не підтримує альтернативну назву теми (SAN) *. PyPI використовує SAN в якості альтернативи своєму CN в своєму сертифікаті, а wget задавлюється невідповідністю. Оновлення wget має вирішити його.

* або можливо вказівка ​​імені сервера (SNI) - я не впевнений, що стосується тут.

Список літератури:


1

Рішення 1:

openssl s_client -connect whateversite.com:443 -debug 

Отримайте ключ сертифіката та скопіюйте його /etc/ssl/certs.

$ wget https://www.python.org --ca-certificate=/etc/ssl/certsfile

Якщо ви хочете іти небезпечним шляхом, тоді спробуйте рішення 2

Рішення 2:

$ wget https://www.python.org --no-check-certificate

або Використання Curl

$ curl https://www.python.org --insecure

9
«Докторе, я не можу ходити на лівій нозі. - Рішення 1: перемістіть те, що вам потрібно біля свого стільця, щоб вам не потрібно стояти. Рішення 2: стрибок. "Ні, рішення полягає в тому, щоб вилікувати проблему. Що тут означає ремонт або перевстановлення кореневих сертифікатів CA.
Жил "ТАК - перестань бути злим"

4
це добре тільки для
самовивірених самовивірених

1
Так, це погана ідея. Рішення 1 теж небезпечно . Все, що ви робите, - це обхід перевірки wget, автоматично довіряючи сертифікату з цього моменту. Ви повинні вирішити основну проблему, фактично встановивши доступ до кореневих сертифікатів, до яких має доступ.
Ендрю Фер’є

Хоча це лише обхідне рішення, якщо ваші sysadmins змушують вас використовувати зламані списки сертифікатів root або параметри безпеки драконів, це не заслуговує на ненависть.
Нуреттін

0

Оновіть час на сервері. Одна секунда може викликати це питання!

Перевірте: date

Redhat / CentOS 6/7 yum -y install ntpdate; /usr/sbin/ntpdate -u pool.ntp.org

Ubuntu / Debian apt-get -y install ntpdate; /usr/sbin/ntpdate -u pool.ntp.org


0

echo "check_certificate = off" >> ~ / .wgetrc


1
Це досить небезпечно припустити.
плот

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