определить, использует ли TCP-соединение SSL - PullRequest
0 голосов
/ 25 февраля 2010

Возможно, какой-нибудь сервер может обрабатывать как незащищенные, так и защищенные протоколы. Есть ли известный способ определить, является ли существующее TCP-соединение безопасным или нет?

(Я полагаю, что можно просто отслеживать трафик и проверять, является ли какой-либо текст читабельным, но, может быть, есть лучшие или, возможно, более подробные предложения?)

1 Ответ

1 голос
/ 25 февраля 2010

Если вы используете .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.

...