【问题标题】:Delphi XE8 Indy OpenSSL , after update for windows 11 i got error 14077410 SSL23_GET_SERVER_HELLODelphi XE8 Indy OpenSSL,在 Windows 11 更新后出现错误 14077410 SSL23_GET_SERVER_HELLO
【发布时间】: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


【解决方案1】:

我从 GitHub 更新了 Indy,它又可以正常工作了。

【讨论】:

  • 这不是一个答案。你肯定是说“它是在职的再次”(名词与动词)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 2019-03-12
  • 2015-10-20
相关资源
最近更新 更多