小编avi*_*vil的帖子

tidhttp:奇怪的SSLv3_READ_BYTES错误(直接设置TLSv1_2连接)

简单代码:

procedure TForm1.Button1Click(Sender: TObject);
  //var
  //h: tIdHTTP;
  //SSL: TIdSSLIOHandlerSocketOpenSSL;
begin
  h.IOHandler := SSL;
  SSL.SSLOptions.Method := sslvTLSv1_2;
  SSL.SLLOptions.SSLVersion := [sslvTLSv1_2]; //must be set automatically after SetMethod, but just to be sure
  h.Get('https://www.deviantart.com/users/login');
end;
Run Code Online (Sandbox Code Playgroud)

那个简单的代码给了我一个错误:

连接SSL时出错.
错误:14094410:SSL例程:ssl3_read_bytes:sslv3警报握手失败

我使用Delphi XE3和OpenSSL 1.0.2b库.我无法弄明白,在查看消息来源时,连接启动中存在禁用未使用版本的字符串:

if not (sslvSSLv2 in SSLVersions) then begin
  SSL_CTX_set_options(fContext, SSL_OP_NO_SSLv2);
end;
if not (sslvSSLv3 in SSLVersions) then begin
  SSL_CTX_set_options(fContext, SSL_OP_NO_SSLv3);
end;
if not (sslvTLSv1 in SSLVersions) then begin
  SSL_CTX_set_options(fContext, SSL_OP_NO_TLSv1);
end;
Run Code Online (Sandbox Code Playgroud)

但sslv3的操作仍然以某种方式进行.看起来不像组件的bug.某个库内部,或者indy在设置参数时没有考虑到什么?

或者实际上是我,谁没有注意到重要的事情?我真的希望我不需要经历一个名为"indy components update"的地狱.

测试(尝试所有方法,包括TLS1.2) https://www.deviantart.com/users/login

Resolving hostname www.deviantart.com.
Connecting to 54.230.96.81. …
Run Code Online (Sandbox Code Playgroud)

delphi ssl openssl http indy

5
推荐指数
1
解决办法
2479
查看次数

标签 统计

delphi ×1

http ×1

indy ×1

openssl ×1

ssl ×1