wget, самозаверяющие сертификаты и пользовательский HTTPS-сервер

StackOverflow https://stackoverflow.com/questions/1644622

Вопрос

По разным причинам я создал простой 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

Я возвращаюсь:ошибка проверки: число = 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 просто не работают с самозаверяющими сертификатами?

Обновить:

Для всех, кто появится позже, добавление этого кода помогло с клиентом 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);
Это было полезно?

Решение

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

Для этого укажите сертификат следующим образом --ca-certificate=... в wget и -CAfile в s_client кейс.

Другие советы

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

  • Поместите свой сертификат центра сертификации в /etc/pki/tls/certs или эквивалентный каталог, затем создайте ссылку на основе хэша сертификата.Видишь http://gagravarr.org/writing/openssl-certs/others.shtml#ca-openssl за подробностями.
  • Добавьте свой сертификат центра сертификации в /etc/pki/tls/certs/ca-bundle.crt, /etc/pki/tls/cert.pem или эквивалентный пакет центров сертификации.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top