代码之家  ›  专栏  ›  技术社区  ›  noonex

确定TCP连接是否使用SSL

  •  0
  • noonex  · 技术社区  · 15 年前

    也许有些服务器可以同时处理非安全和安全协议。 是否有已知的方法来确定现有的TCP连接是否安全?

    (我相信可以监控流量并检查一些文本是否可读,但可能有更好或更详细的建议?)

    1 回复  |  直到 15 年前
        1
  •  1
  •   sipsorcery    15 年前

    如果使用.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。