gpt4 book ai didi

delphi - 印第 "1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number call:"

转载 作者:行者123 更新时间:2023-12-03 14:52:39 25 4
gpt4 key购买 nike

我有一个网络应用程序,可以频繁地TIdHTTP调用 Google Analytics API(每天大约 25,000-50,000 次)。有时,对 API 的调用会失败,并在主题行中显示错误消息(不常见 - 不到千分之一)。我一直无法找到一种模式来实现它。重试失败的调用通常会起作用。所以这看起来完全是随机的。

我有最新版本的 openssl (1.0.2.1 - 03/20/2015)。以及最新版本的 Indy(源代码文件日期为 01/07/2015)。

下面是进行这些调用的基本源代码。

有人知道它可能是什么吗?

同时调用两次 API 是否会影响事情(这发生在多线程 Web 应用程序中)?

IdSSLIOHandlerSocket1 := TIdSSLIOHandlerSocketOpenSSL.create(nil);
IdSSLIOHandlerSocket1.PassThrough := True;
IdHTTP := TIdHTTP.create(nil);
IdHTTP.reusesocket := rsTrue;
IdSSLIOHandlerSocket1.reusesocket := rsTrue;
idhttp.handleredirects := True;
with IdSSLIOHandlerSocket1 do begin
SSLOptions.Method := sslvTLSv1_2;
SSLOptions.SSLVersions := [sslvTLSv1_2];
SSLOptions.VerifyMode := [];
SSLOptions.VerifyDepth := 2;
end;
with IdHTTP do begin
IOHandler := IdSSLIOHandlerSocket1;
ProxyParams.BasicAuthentication := False;
Request.UserAgent := 'EmbeddedAnalytics API Interface';
Request.ContentType := 'text/html';
request.connection := 'close';
Request.Accept := 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
Request.BasicAuthentication := False;
Request.UserAgent := 'Mozilla/3.0 (compatible; Indy Library)';
HTTPOptions := [hoForceEncodeParams];
Request.AcceptEncoding := 'gzip,deflate';
Request.CustomHeaders.Add('Accept-Language: en-us,en;q=0.5');
idhttp.Request.CustomHeaders.Add('Authorization: Bearer '+FToken);
end;
idhttp.get(':https://www.googleapis.com/analytics/v3/data/realtime?ids=..........');

更新 1 将一些代码行更新为:

SSLOptions.Method := sslvSSLv3;
SSLOptions.SSLVersions := [sslvSSLv3];

它有效。我将监视并查看 SSL 错误是否消失。

解决方案 事实证明,对 sslVSSLv3 进行更改修复了该问题。我不再收到错误了!看到大多数其他服务都采用 TLS,这有点令人惊讶。

最佳答案

Problem solved by changing this:

SSLOptions.Method := sslvTLSv1_2;
SSLOptions.SSLVersions := [sslvTLSv1_2];

To this:

SSLOptions.Method := sslvSSLv3;
SSLOptions.SSLVersions := [sslvSSLv3];

您可能想尝试使用 TLS 1.0,以避免 SSLv3。

对于 Google 和 TLS 1.2,有两件事需要注意。其中一些现在可能已经改变。 (此讨论非常具体,仅适用于 Google 服务器和 TLS 1.2)。

首先,如果使用 TLS 1.2 和 ECDSA,则必须禁用压缩。这个奇怪的事实出现在 OpenSSL 邮件列表 ECDHE-ECDSA Support 下的讨论中。 。这是它生成的相关支持票证:Bug 3277: OpenSSL s_client doc missing option .

其次,如果您不使用 ChaCha20/Poly1305 密码,那么您必须注意 TLS 1.2 的后备密码套件。我一直无法弄清楚这一点(特别是因为所有临时 DH 套件都应该受到支持),但我知道测试中曾经就是这种情况。因此,请务必包含以下回退内容(运行 IIS 8(或可能 7)及更早版本的 Microsoft 服务器也需要这样做):

  • TLS_RSA_WITH_AES_256_CBC_SHA256
  • TLS_RSA_WITH_AES_256_CBC_SHA
  • TLS_RSA_WITH_AES_128_CBC_SHA256
  • TLS_RSA_WITH_AES_128_CBC_SHA

关于delphi - 印第 "1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number call:",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29627991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com