我在Delphi 2007中使用Indy 10.6.2(SVN的当前版本)服务器组件,在Delphi 6应用程序中使用客户端组件,当然还使用OpenSSL。
我在客户端应用程序中收到“与SSL连接错误。观察到EOF违反了协议”。
据我在网上发现的情况,这是由于服务器套接字关闭了其连接所致,例如,由于SSL版本不匹配或HTTP客户端与服务器之间的密码不匹配。听起来很合逻辑。
我想调试(在服务器端引入更多有关此不匹配的报告),但是Indy库(系统,核心,协议)中的代码在哪里(如果有)检查并关闭服务器连接(拒绝客户端请求),代码在哪里?是否发现不兼容?
我的问题的答案可以解决“使用SSL连接时出错。观察到EOF违反了协议”,但它在将来也可以帮助解决握手期间的任何问题,即,如果我对拒绝的连接实施更广泛的日志记录。
最佳答案
当发现任何不兼容性时,Indy库(系统,核心,协议)中的代码在哪里检查和关闭服务器连接(拒绝客户端请求)的代码在哪里?
无处,因为不是Indy进行检查。 OpenSSL本身在处理SSL握手时在内部进行检查。 OpenSSL具有套接字句柄。当它检测到握手问题时,它将立即关闭套接字连接,并向Indy返回错误,然后Indy关闭套接字句柄。
关于delphi - 哪个Indy TIdHTTPServer代码ir负责服务器端SSL版本和密码的检查?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54762422/