也许某些服务器可以处理非安全和安全协议。 有没有已知的方法来确定现有的 TCP 连接是否安全?
(我相信可以监控流量并检查某些文本是否可读,但也许有更好或更详细的建议?)
如果您使用.Net,您可以使用现有的 TCP 连接作为 SSL 连接的基础。要以编程方式检查服务器端口是否实现 SSL,只需建立 TCP 连接,然后尝试在其上创建 SSL 连接。如果 SSL 握手失败,将会抛出异常,那么您就会知道 SSL 在该端口上不可用。
代码如下:
TcpClient tcpClient = new TcpClient();
tcpClient.Connect(remoteEndPoint);
SslStream sslStream = new SslStream(tcpClient.GetStream(), false,
new RemoteCertificateValidationCallback(ValidateServerCertificate),
null);
sslStream.AuthenticateAsClient(serverCN);
异常表示没有 SSL。