У меня есть проект, который все еще работает в Windows 10, и он работал в Windows 11. Но после того, как я установил обновления для Windows 11 (не 22H2):
Теперь я получаю сообщение об ошибке:
ошибка: 14077410: подпрограммы SSL: SSL23_GET_SERVER_HELLO: предупреждение sslv3 сбой рукопожатия.
Моя установка Indy 10.6.2.5263, OpenSSL 1.0.2u, Delphi XE8, и я использую следующий код:
CInitialized := false;
idHttpC := TIdHTTP.Create(nil);
idHttpC.ConnectTimeout := 80000;
idHttpC.ReadTimeout := 80000;
idHttpC.AllowCookies := true;
// config Redirect's
idHttpC.RedirectMaximum := 35;
idHttpC.HandleRedirects := true;
idHttpC.HTTPOptions := [hoTreat302Like303, hoKeepOrigProtocol];
idHttpC.OnRedirect := IdHTTP1Redirect;
// create Cookie's
idCookieC := TIdCookieManager.Create(IdHttpC);
idHttpC.CookieManager := idCookieC;
// create gzip Compressor
idHttpC.Compressor := TIdCompressorZLib.Create(idHttpC);
// create OpenSSL
lIOHandlerC := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
lIOHandlerC.SSLOptions.Mode := sslmClient;
lIOHandlerC.SSLOptions.SSLVersions := [sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2];
idHttpC.IOHandler := lIOHandlerC;
По моей просьбе:
Result := idHttpC.Get('https://leinestern.de/');
Я получил:
ошибка: 14077410: подпрограммы SSL: SSL23_GET_SERVER_HELLO: ошибка рукопожатия предупреждения sslv3.
Что здесь не так? Может быть, мне нужно изменить какие-то новые настройки?
Я не использую антивирус или брандмауэр, встроенный антивирус и брандмауэр отключены.
Используете ли вы Indy, который поставляется с предустановленной XE8? Если это так, то эта версия (от 2015 г.) предшествует поддержке Indy SNI на стороне клиента в рукопожатии TLS (добавлено в 2016 г.), которое в настоящее время требуется многим веб-сайтам. Скорее всего, вам придется обновить Indy до последней версии из репозитория GitHub , инструкции см. в разделе Обновление Indy.
@RemyLebeau нет, я обновляю его с github, не в этом году, но он работал даже на win11 до обновления KB5017383, к сожалению, его невозможно удалить. больше информации о KB5017811
Не видя реального рукопожатия TLS, я не могу помочь вам с ошибками OpenSSL. И я понятия не имею, как обновления Windows влияют на OpenSSL. Возможно, вам придется обратиться за помощью к сообществу OpenSSL. Конечно, они, скорее всего, посоветуют вам прекратить использовать 1.0.2u и вместо этого обновиться до 1.1.x или 3.x. Но TIdSSLIOHandlerSocketOpenSSL
не поддерживает эти версии, вместо этого вам придется использовать этот незавершенный SSLIOHander.
@RemyLebeau сегодня я обновил indy с GitHub и снова заработал. В любом случае, я думаю, что в новом обновлении Windows есть некоторые изменения в TLS.
OpenSSL реализует TLS самостоятельно, он не зависит от реализации Windows.
я обновил Indy с GitHub, и он снова работает.
Это не ответ. И вы наверняка имели в виду «он снова работает» (существительное против глагола).
теперь я вижу, что получил еще одно обновление от 21.09.2022, и это «Стек обслуживания 10.0.22000.1035» или KB5017383. К сожалению, удалить нельзя.