【发布时间】:2013-07-16 13:16:04
【问题描述】:
我正在 delphi xe2 上使用 indy 10.5.8 开发代理服务器 如您所知 TIdHTTPProxyServer 不支持 ssl navtively 所以我向它添加了一个 ssl io 处理程序,并且 ssl 握手没问题,但在那之后服务器返回错误“套接字错误 #10054 连接由对等方重置。”并断开 ssl 库没问题,我只像这样更改了 onbefor 命令:
if (TIdTCPClient(AContext.OutboundClient).Port = 443) then
begin
if not (AContext.OutboundClient.IOHandler is TIdSSLIOHandlerSocketOpenSSL) then
begin
if Assigned(AContext.OutboundClient.IOHandler) then
AContext.OutboundClient.IOHandler.Free;
AContext.OutboundClient.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(AContext.OutboundClient);
end;
SSLClient := TIdSSLIOHandlerSocketOpenSSL(AContext.OutboundClient.IOHandler);
SSLClient.SSLOptions.Method := sslvSSLv23;
SSLClient.SSLOptions.Mode := sslmClient;
SSLClient.SSLOptions.SSLVersions:= [sslvSSLv2, sslvSSLv23, sslvSSLv3, sslvTLSv1];
SSLClient.SSLOptions.VerifyMode := [];
SSLClient.OnStatus := StausChange;
SSLClient.OnStatusInfo := StausChangeex;
SSLClient.PassThrough := False;
AContext.OutboundClient.IOHandler.ReadTimeout := 5000;
end else if AContext.OutboundClient.IOHandler is TIdSSLIOHandlerSocketOpenSSL then
begin
TIdSSLIOHandlerSocketOpenSSL(AContext.OutboundClient.IOHandler).PassThrough := true;
end;
跟踪日志是:
Resolving hostname accounts.google.com.
Connecting to 173.194.70.84.
SSL status: "before/connect initialization"
SSL status: "before/connect initialization"
SSL status: "SSLv2/v3 write client hello A"
SSL status: "SSLv3 read server hello A"
SSL status: "SSLv3 read server certificate A"
SSL status: "SSLv3 read server key exchange A"
SSL status: "SSLv3 read server done A"
SSL status: "SSLv3 write client key exchange A"
SSL status: "SSLv3 write change cipher spec A"
SSL status: "SSLv3 write finished A"
SSL status: "SSLv3 flush data"
SSL status: "SSLv3 read finished A"
SSL status: "SSL negotiation finished successfully"
SSL status: "SSL negotiation finished successfully"
Cipher: name = ECDHE-RSA-AES128-GCM-SHA256; description = ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD
; bits = 128; version = TLSv1/SSLv3;
SSL status: "SSL negotiation finished successfully"
Disconnected.
Socket Error # 10054
Connection reset by peer.
【问题讨论】:
-
日期时间正确吗?
标签: delphi https indy proxy-server