【发布时间】:2022-10-05 01:45:59
【问题描述】:
我有一个仍然可以在 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 警报握手失败。
这里有什么问题?也许我必须改变一些新的设置?
我没有使用任何防病毒软件或防火墙,内置的防病毒软件和防火墙被禁用。
-
现在我看到我在 21.09.2022 获得了另一个更新,它是“服务堆栈 10.0.22000.1035”或 KB5017383。不幸的是,它无法卸载。
-
您是否使用预装 XE8 的 Indy?如果是这样,该版本(从 2015 年开始)早于 Indy 在 TLS 握手(2016 年添加)中对客户端 SNI 的支持,现在许多网站都需要这种支持。您可能必须将您的 Indy 从其 GitHub repo 升级到最新版本,有关说明,请参阅 Updating Indy。
-
@RemyLebeau 不,我从 github 更新它,不是今年,但它甚至在 KB5017383 更新之前的 win11 上也能工作,不幸的是它无法卸载。有关 KB5017811 的更多信息
-
如果没有看到实际的 TLS 握手,我无法真正帮助您解决 OpenSSL 故障。而且我不知道 Windows 更新如何影响 OpenSSL。您可能需要向 OpenSSL 社区寻求帮助。当然,他们可能会告诉您停止使用 1.0.2u 并改为更新到 1.1.x 或 3.x。但是
TIdSSLIOHandlerSocketOpenSSL不支持这些版本,您必须使用this work-in-progress SSLIOHander 来代替。 -
@RemyLebeau 今天我从 GitHub 更新了 indy 及其工作。无论如何,我认为新的 Windows 更新在 TLS 上有一些变化。
标签: delphi openssl indy handshake