哪个 Indy TIdHTTPServer 代码负责服务器端检查 SSL 版本和密码?

Which Indy TIdHTTPServer code ir responsible for server side checking of SSL versions and ciphers?

我在 Delphi 2007 中使用 Indy 10.6.2(SVN 的当前版本)服务器组件,在 Delphi 6 应用程序中使用客户端组件,当然还有 OpenSSL。

我在客户端应用程序中收到 "Error connecting with SSL. EOF was observed that violates the protocol"。

据我在网上发现,这是由于服务器套接字关闭其连接引起的,例如,由于 HTTP 客户端和服务器之间的 SSL 版本或密码不匹配。听起来很有逻辑。

我想调试(在服务器端引入更多关于这种不匹配的报告),但是位于 Indy 库(系统、核心、协议)中的代码在哪里检查和关闭服务器连接(拒绝客户请求)何时观察到任何不兼容性?

我的问题的答案可以解决 "Error connecting with SSL. EOF was observed that violates the protocol",但它也可以帮助将来解决握手期间的任何问题,即,如果我对被拒绝的连接实施更广泛的日志记录。

where is the code located in the Indy libraries (System, Core, Protocols) that checks and closes the server connection (that rejects client request) when any incompatibilities are observed?

无处可去,因为不是 Indy 在进行检查。 OpenSSL 本身在处理 SSL 握手时在内部进行检查。 OpenSSL 具有套接字句柄。当它检测到握手问题时,它会立即关闭套接字连接,并向 Indy returns 发送一个错误,然后关闭套接字句柄。