«1408F10B: Подпрограммы SSL: SSL3_GET_RECORD: неправильный вызов номера версии:» на Indy

У меня есть веб-приложение, которое частоTIdHTTP звонки в Google Analytics API (около 25 000-50 000 в день). Время от времени вызовы API завершаются ошибкой с сообщением об ошибке в строке темы (не часто - менее 1 раза из 1000). Я никогда не мог найти шаблон, чтобы это произошло. И повторение неудачного вызова обычно работает. Так что это кажется совершенно случайным.

У меня последняя версия openssl (1.0.2.1 - 20.03.2015). И последняя версия Indy (файлы с исходным кодом от 01.07.2015).

Ниже приведен основной исходный код для выполнения этих вызовов.

У кого-нибудь есть идеи, что бы это могло быть?

Повлияет ли выполнение двух одновременных вызовов на API (это происходит в многопоточном веб-приложении)?

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.

Ответы на вопрос(3)

Ваш ответ на вопрос