我正在尝试创建一个允许非SSL感知客户端通过SSL进行通信的简单程序。
基本上,IdMappedPortTCP接受来自客户端的非加密(不是SSL),并通过SSL将数据转发到指定的MappedHost和MappedPort属性。
到目前为止,我在OnOutboundConnect事件上尝试了以下代码,但似乎无效:
AContext.Connection.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(AContext.Connection);
将其视为 stunnel (SSL / TLS代理)的简单版本
答案 0 :(得分:1)
您在错误的事件中分配了错误的IOHandler。
您正在为客户端分配连接的IOHandler,而不是与映射服务器的连接的IOHandler。而且,在建立与映射服务器的连接后触发的事件中,您正在这样做。
此外,在建立SSL会话时,您必须将SSLIOHandler的SqlCommand com = new SqlCommand("LoadGUIDs", sqlconn)
{
CommandType = CommandType.StoredProcedure
};
SqlDataReader data = com.ExecuteReader(); // << TIMES OUT
属性设置为False。默认为True。
在PassThrough
事件而不是OnConnect
事件中,请使用:
OnOutboundConnect