Как заставить wget доверять моему самозаверяющему сертификату (без использования --no-check-certificate)?
- Ubuntu 12.04
- OpenSSL 1.0.1 14
- Wget 1.13.4
Моя настройка:
- создать наш собственный CA (
our_own_ca.crt
) - создать сертификат, который подписан с помощью вышеуказанного центра сертификации (
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-certificates/
затем беги update-ca-certificates
, Вот вывод:
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
но получил ту же ошибку.
Я что-то пропустил?
1 ответ
Я бы попробовал --ca-directory=directory
опция:
wget --ca-directory=/etc/ssl/certs https://graphite.local
Из руководства wget
Указывает каталог, содержащий сертификаты CA в формате PEM. Каждый файл содержит один сертификат CA, а имя файла основано на хэш-значении, полученном из сертификата. Это достигается путем обработки каталога сертификатов с помощью утилиты c_rehash, поставляемой с OpenSSL. Использование "--ca-directory" более эффективно, чем "--ca-Certificate", когда установлено много сертификатов, поскольку это позволяет Wget получать сертификаты по требованию.
Без этой опции Wget ищет сертификаты CA в указанных в системе местах, выбранных во время установки OpenSSL.