0
私は、SSLサーバ/クライアントプログラムを書く必要があり:なぜwiresharkを使用してc#ssl server/clientプログラムにTCPパッケージがあるのですか?
サーバー:
static void Main(string[] args)
{
var store = new X509Store(StoreName.Root);
store.Open(OpenFlags.ReadWrite);
var certs = store.Certificates.Find(X509FindType.FindBySubjectName, "TestServer", false);
var x509 = certs[0];
var listener = new TcpListener(IPAddress.Parse("192.168.97.2"), 2000);
listener.Start();
while (true)
{
var client = listener.AcceptTcpClient();
var sslStream = new SslStream(client.GetStream(), false);
sslStream.AuthenticateAsServer(x509, false, SslProtocols.Tls, true);
Console.WriteLine(ReadMessage(sslStream));
}
}
クライアント:
static void Main(string[] args)
{
var client = new TcpClient("192.168.97.2",2000);
var ssl = new SslStream(client.GetStream(), false, new RemoteCertificateValidationCallback(ValidateServerCertificate), null);
ssl.AuthenticateAsClient("TestServer");
byte[] message = Encoding.UTF8.GetBytes("abc");
ssl.Write(message);
ssl.Flush();
client.Close();
}
それが仕事の罰金が、私はWiresharkのことで、ネットワークのパッケージを捕獲しようと、私はサーバーとクライアントの間にTCPパッケージがあります。
私はTLSパッケージを持っているべきだと思っています。理由はわかりません。
TCPはここにはありません。 –
ところで、SSL/TLSの会話をキャプチャして、WiresharkがSSL/TLSハンドシェイクでストリームをよりよく識別できるようにする必要があります。さもなければ、そのようなパケットはTCPの上のランダムデータのようです。 –