2

HTTPS で動作する小さな C# Web サーバーを作成しようとしています。この WebServer ライブラリを使用することにしました。これは、私が探しているすべての機能を備えているように思われるからです。私は SSL/TLS に関してはあまり詳しくないので、HTTPS の部分を機能させるために誰か助けてくれる人がいないかと思っていました。基本的に、Web サーバー ライブラリで動作する SSL 証明書を作成し (この例では、X.509 証明書を使用しているように見えます)、その証明書をコンピューターおよび/または現在の信頼できる証明書に追加する必要があります。ユーザー。

これまでのコードは次のとおりです(基本的には、例からコピーして貼り付けただけです):

var certificate = new X509Certificate2("C:\\Certs\\certificate.dat", "password");

// We do the cast since we want to specify UseClientCert
var listener = HttpListener.Create(System.Net.IPAddress.Any, 8080, certificate);
listener.RequestReceived+=listener_RequestReceived;
listener.Start(5);

そのコードの前のどこかで、「C:\Certs\certificate.dat」が存在し、コンピューターによって信頼されているかどうかを確認する必要があります。そうでない場合は、証明書を作成して信頼する必要があります。

アプリケーションは管理者特権で実行されるため、権限の問題は問題になりません

EDIT 1:私がやろうとしていることを正確に説明する必要があるようです。実行すると、ローカル マシンで使用される HTTPS Web サーバーを起動するプログラムを作成しようとしています。「OMG THIS PAGE DOESNT HAVE A GOOD SECURITY KEY!!!」という大量のメッセージを取得せずに、コンピューターが HTTPS ローカル ページにアクセスできるようにするためだけに、キーを使用して実際の検証を行うつもりはありません。エラー。テストおよび非機密データでのみ使用することを意図しているため、実際のセキュリティは、機能する限り、それほど重要ではありません.

コード側では、この WebServer ライブラリを使用して実際の Web サービスを処理しています。コードはこの例からのものです。

4

1 に答える 1

3

C# コードで証明書を作成する必要はありません。プログラムで独自のものを持ち込むことができます (つまり、makecertで作成)。すでにインストールされているかどうかを確認するには、すでにインストールされているかどうかを確認するために対応X509Storeする反復処理を行い、そうでない場合は追加します。サンプルはStoreName 列挙トピックにあります。

MSDN のサンプルからストア/証明書を操作するために必要なランダムな行を次に示します。

X509Store store = new X509Store(StoreName.My);
store.Open(OpenFlags.ReadWrite);
X509Certificate2 certificate1 = new X509Certificate2("c:\\mycerts\\*****.cer");
store.Add(certificate1);
foreach (X509Certificate2 x509 in storecollection)
{
  Console.WriteLine("certificate name: {0}", x509.Subject);
}

ノート:

  • 証明書の追加は特権操作であり、ストアによっては管理者特権が必要になる場合があります。
  • 証明書に対する Fiddler の動作を見て、同様のプロンプトが必要かどうかを確認できます。(HTTPS 復号化を有効にすると、Fiddler は独自の証明書をインストールします)。
于 2012-10-21T00:19:32.593 に答える