2016-09-03 8 views
1

私はC#開発の新機能です。私はssl/tlsをtcpよりも使用しようとしていますが、コードでは、tcpclientまたはtcplistnerではなく、system.net.sockets.socket(bare socket)が使用されています。私はネット200以上のリンクを検索したが、関連するものは何も得られなかった。私はより少ないコーディングを使用して、sslまたはtsllをtcpソケット接続よりも使いたい。私はクライアント、サーバー、CA証明書、キーを.key形式で持っています。例やリンクでお手伝いください。あなたが詳細を感じたら質問をすることができます。C#ssl/tls with socket tcp

答えて

0

System.Net.Sockets.NetworkStreamを使用してソケットをラップし、次にSystem.Net.Security.SslStreamを使用してネットワークストリームをラップすることができます。

Socket socket; 
Stream networkStream = new NetworkStream(socket); 
Stream sslStream = new SslStream(networkStream); 
+0

この回答は十分に簡単です。ちょうど1つの疑問:このようなソケットをラップした後は、socket.send()を使用すべきではなく、全体を通してsslStreamを使用するべきですか? Begin/Endを使って送受信を行うAsyncソケットを使ったプロジェクトが既にあるので、うまくいきます。 Use SSLはアプリケーションのオプションとしてのみ計画されているため、実装するためにはどれだけの変更が必要かを把握しようとしています。どんな助けもありがとう。事前に多くの感謝。 –

1

なぜあなたはTcpClientにしたくないですか? TcpClientSsltreamでSSL接続を作成するのは簡単です。何千もの同時接続が必要な場合を除き、私はTcpClientSSLStreamに固執します。次のように

基本TcpClientSslStream例は次のようになります。

static void Main(string[] args) 
{ 
    string server = "127.0.0.1"; 
    TcpClient client = new TcpClient(server, 443); 

    using (SslStream sslStream = new SslStream(client.GetStream(), false, 
     new RemoteCertificateValidationCallback(ValidateServerCertificate), null)) 
    { 
     sslStream.AuthenticateAsClient(server); 
     // This is where you read and send data 
    } 
    client.Close(); 
} 

public static bool ValidateServerCertificate(object sender, X509Certificate certificate, 
X509Chain chain, SslPolicyErrors sslPolicyErrors) 
{ 
    return true; 
} 

高性能ソケットコードは、.NETで書くのは難しいことができますが、良い例がそこにあります。あなたにはいくつかの選択肢があります。私は1つの解決策がすべてに合っているかどうかはわかりませんので、ここでいくつかリストします。多分あなたが利用することができ、いくつかの既存のライブラリがあります

  • 開始するには良い場所である[Asynchronous Client Socket]を使用して

    1. 。私はNitro/Asyncを使用しましたが、2009年以降に更新されたとは思われません。バージョン2の話がありましたが、それが実現したとは考えていません。
    2. 私はそれに慣れていないんだけどCodeProjectのはC# SocketAsyncEventArgs High Performance Socket Code
    3. レビューマイクロソフトの指導、スティーブンToubが、私は特にSSLを扱うが、見ていないAwaiting Socket Operations

    含めて言っているHigh Performance .NET Socket Server Using Async Winsock

  • 読むのすべてを持っていますSslStreamクラスに追加します。

    また、バッファプールについて調べることもできます。何千ものクライアントにサービスを提供している場合、ガベージコレクションが問題になります。これに優れた導入は、前Sunny Ahuwanya's Blog


    http://nitoasync.codeplex.com/

    です。

  • +0

    この回答には多大な努力を払っていますが、悲しいことに、これはまったく答えません。 –

    関連する問題