wget, самозаверяющие сертификаты и пользовательский HTTPS-сервер - PullRequest
10 голосов
/ 29 октября 2009

По разным причинам я создал простой HTTP-сервер и добавил поддержку SSL через OpenSSL. Я использую самоподписанные сертификаты. IE, Firefox и Chrome успешно загружают контент, пока я добавляю ЦС в доверенные корневые ЦС.

Однако wget (даже при использовании флага --no-check-certificate) сообщает:

OpenSSL: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure

Если я запускаю клиент OpenSSL на моем сервере, используя:

openssl s_client -connect dnvista:82 -debug

Я вернусь: ошибка проверки: num = 19: самоподписанный сертификат в цепочке сертификатов подтвердить возврат: 0 а затем

5852:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:.\ssl\s3_pkt.c:1060:SSL alert number 40
5852:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:.\ssl\s23_lib.c:188:

wget и клиент OpenSSL просто не работают с самозаверяющими сертификатами?

UPDATE:

Для всех, кто придет позже, добавление этого кода помогло с клиентом OpenSSL и Firefox:

EC_KEY *ecdh = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1);
SSL_CTX_set_tmp_ecdh(ctx, ecdh);
EC_KEY_free(ecdh);

Ответы [ 2 ]

11 голосов
/ 29 октября 2009

Я проверил справочную страницу wget, и --no-check-certificate, похоже, влияет только на сертификат сервера . Вы должны указать свой самоподписанный сертификат как действительный сертификат CA локально.

Для этого укажите сертификат --ca-certificate=... в wget и -CAfile в s_client случае.

5 голосов
/ 22 января 2010

Вы также можете установить доверенные корневые сертификаты CA в OpenSSL одним из следующих способов:

  • Поместите свой сертификат CA в / etc / pki / tls / certs или эквивалентный каталог, затем создайте ссылку на основе хэша сертификата. Подробнее см. http://gagravarr.org/writing/openssl-certs/others.shtml#ca-openssl.
  • Добавьте свой сертификат CA в /etc/pki/tls/certs/ca-bundle.crt, /etc/pki/tls/cert.pem или эквивалентный пакет CA.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...