wget, самозаверяющие сертификаты и пользовательский HTTPS-сервер
по разным причинам я создал простой HTTP-сервер и добавил поддержку SSL через OpenSSL. Я использую самоподписанный сертификат. IE, Firefox и Chrome с радостью загружают контент, пока я добавляю CA в доверенный корневой CAs.
однако, 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 а потом ... --6-->
5852:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:.ssls3_pkt.c:1060:SSL alert number 40
5852:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:.ssls23_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);
2 ответов
Я проверил справочную страницу wget
и --no-check-certificate
только, кажется, влияет на сертификат сервера. Необходимо указать самозаверяющий сертификат в качестве действительного сертификата CA локально.
для этого укажите сертификат в качестве --ca-certificate=...
на wget
и -CAfile
на s_client
случае.
вы также можете установить Доверенные корневые сертификаты 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.