По различным причинам я создал простой HTTP-сервер и добавил поддержку SSL через OpenSSL. Я использую самозаверяющие сертификаты. IE, Firefox и Chrome счастливо загружают контент, пока я добавляю CA в доверенные корневые центры сертификации.wget, самозаверяющие сертификаты и собственный HTTPS-сервер
Однако 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 просто не работают с самозаверяющими сертификатами?
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);
Hi. Я видел много таких комментариев, таких как «Turn off-off» в количестве слов. Это действительно идея _BAD_ **. Немного похоже на уличные гонки с лысыми шинами на мокрой дороге. Я разочарован, что этот ответ получил отметку «tick». – will
будет: я согласен, поворот проверки, как правило, плохая идея. Мой ответ предлагает один способ сделать сертификат CA известным клиенту, так что проверка может быть выполнена правильно. –