我有一个Delphi 2007 TIdHttpServer Web应用程序(版本10)。我的 IdHTTPServer1.onexception 处理程序正在处理许多这些异常:
接受与SSL的连接时出错。观察到违反EOF的情况 协议
我也有最新版本的OpenSSL(1.0.2.4)。
我知道有一个MCVE(最小,完整和可验证的例子)是协议。但是我无法复制这个。这些例外发生在生产环境中。我所能做的只是记录IP地址。 IP地址是随机的。所以它似乎不是任何单一的垃圾邮件机器人#34;这可能是这样做的。
这些异常是否意味着正在使用我不支持的SSL版本发出请求?
我能做些什么来解决这个问题吗?
或者这是我不应该担心的事情吗?
以下是我设置服务器的代码:
ServerIOHandler := TIdServerIOHandlerSSLOpenSSL.Create(self);
ServerIOHandler.SSLOptions.CertFile := 'C:\xxxxx.crt';
ServerIOHandler.SSLOptions.KeyFile := 'C:\xxxxx.key';
ServerIOHandler.SSLOptions.RootCertFile := 'C:\yyyyyyy.crt';
ServerIOHandler.SSLOptions.Method := sslvSSLv23;
ServerIOHandler.SSLOptions.SSLVersions := [sslvSSLv23,sslvSSLv2, sslvSSLv3, sslvTLSv1,sslvTLSv1_1,sslvTLSv1_2];
ServerIOHandler.OnGetPassword := GetSSLPassword;
IdHTTPServer1 := TEAIdHTTPServer.Create;
IdHTTPServer1.MaxConnections := 1000;
IdHTTPServer1.AutoStartSession := True;
IdHTTPServer1.SessionState := True;
IdHTTPServer1.OnCommandGet := MainGet;
IdHTTPServer1.onexception := IdHttpServerexception;
IdHTTPServer1.onlistenexception := IdHttpServerlistenexception;
IdHTTPServer1.onconnect := IdHttpServerConnect;
IdHTTPServer1.ondisconnect := IdHttpServerDisconnect;
idHttpServer1.ParseParams := True;
idHttpServer1.OnQuerySSLPort := QuerySSLPort;
idHttpServer1.IOHandler := ServerIOHandler;
idHttpServer1.Bindings.Add.Port := 80;
idHttpServer1.Bindings.Add.Port := 443;
IdHTTPServer1.Active := True;
procedure TMyProject.QuerySSLPort(APort: TIdPort; var VUseSSL: Boolean);
begin
if APort=80 then begin
vUseSSL := False;
end else if APort=443 then begin
vUseSSL := True;
end else begin
vUseSSL := False;
end;
end;