Как заставить wget доверять моему самоподписанному сертификату (без использования --no-check-certificate)? [дубликат]

На этот вопрос уже есть ответ:

  • Ubuntu 12.04
  • OpenSSL 1.0.1 14
  • Wget 1.13.4

Мои настройки:

  • создать наш собственный CA ( our_own_ca.crt )
  • создать сертификат, подписанный указанным выше CA ( graphite.local.crt )
  • Объединить этот сертификат и сертификат CA в файл пакета

Конфигурация Nginx:

ssl_certificate /etc/ssl/certs/graphite.local.crt;
ssl_certificate_key /etc/ssl/certs/graphite.local.key;
ssl_client_certificate /etc/ssl/certs/our_own_ca_chained.crt;

с:

our_own_ca_chained.crt = graphite.local.crt + own_own_ca.crt

Чтобы установить этот CA в доверенное хранилище, согласно /usr/share/doc/ca-certificates/README.Debian , мне просто нужно скопировать его в / usr / local / share / ca-сертификаты / , затем запустите update-ca-сертификаты . Вот результат:

Updating certificates in /etc/ssl/certs... 1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d....
Warning: there was a problem reading the certificate file /etc/ssl/certs/our_own_ca.pem. Message:
  Extensions not allowed in v2 certificate
done.
done.

После этого в / etc / ssl / certs у нас есть что-то вроде следующего:

lrwxrwxrwx 1 root root   17 Mar 11 05:27 99ff557c.0 -> our_own_ca.pem
lrwxrwxrwx 1 root root   17 Mar 11 05:27 dc79b3f0.0 -> our_own_ca.pem
lrwxrwxrwx 1 root root   50 Mar 11 05:27 our_own_ca.pem -> /usr/local/share/ca-certificates/our_own_ca.crt

затем curl работал:

curl -I ] https: //graphite.local

HTTP/1.1 302 FOUND
Server: nginx
Date: Wed, 11 Mar 2015 05:30:30 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Vary: Cookie
Location: https://graphite.local/account/login?next=/
Strict-Transport-Security: max-age=15768000

, но wget не работает:

wget https://graphite.local
--2015-03-11 05:31:22--  https://graphite.local/
Resolving graphite.local (graphite.local)... 127.0.0.1
Connecting to graphite.local (graphite.local)|127.0.0.1|:443... connected.
ERROR: cannot verify graphite.local's certificate, issued by `xxx':
  Self-signed certificate encountered.
To connect to graphite.local insecurely, use `--no-check-certificate'.

Я также пытался использовать - ca-certificate , но получил ту же ошибку.

Я что-то пропустил?

3
задан 11 March 2015 в 07:35
1 ответ

Я бы попробовал вариант --ca-directory=directory:

wget --ca-directory=/etc/ssl/certs https://graphite.local

Из wget manual

Specifies directory containing CA certificates in PEM format (Указать директорию, содержащую сертификаты ЦС в формате PEM). Каждый файл содержит один сертификат ЦС, а имя файла основано на хэш-значении полученные из сертификата. Это достигается путем обработки сертификата каталог с утилитой c_rehash, поставляемой вместе с OpenSSL. Используя . "-каталог" более эффективен, чем "-каталог-сертификат", когда многие сертификаты устанавливаются, так как это позволяет Wget получать сертификаты на demand.

Без этой опции Wget ищет сертификаты CA в указанной системе. места, выбранные во время установки OpenSSL.

1
ответ дан 3 December 2019 в 07:27

Теги

Похожие вопросы