“1408F10B: SSL-Routinen: SSL3_GET_RECORD: Aufrufen der falschen Versionsnummer:” auf Indy

Ich habe eine Web-App, die häufig macht TIdHTTP ruft die Google Analytics-API auf (ca. 25.000 bis 50.000 pro Tag). Von Zeit zu Zeit schlagen Aufrufe der API mit der Fehlermeldung in der Betreffzeile fehl (nicht oft - weniger als 1 von 1000 Mal). Ich habe noch nie ein Muster gefunden, um es zu verwirklichen. Und das Wiederholen des fehlgeschlagenen Anrufs funktioniert normalerweise. Es scheint also völlig zufällig zu sein.

Ich habe die neueste Version von openssl (1.0.2.1 - 20.03.2015). Und die neueste Version von Indy (Quellcode-Dateien vom 01.07.2015).

Below ist der grundlegende Quellcode für diese Aufrufe.

Hat jemand eine Idee woran es liegen könnte?

Würden sich zwei gleichzeitige Aufrufe der API auf die Dinge auswirken (dies geschieht in einer Multithread-Webanwendung)?

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=..........');

Update 1 Aktualisiere einige Codezeilen auf:

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

Es klappt. Ich werde überprüfen, ob SSL-Fehler behoben sind.

Lösun Es stellte sich heraus, dass die Änderungen an sslVSSLv3 behoben wurden. Ich bekomme die Fehler nicht mehr! Dies ist etwas überraschend, da die meisten anderen Dienste stattdessen TLS verwenden.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage