ほとんどの最近の編集を実行していることはありません私は、.NET HttpListener
クラスを使用していますが、私はしませんよIIS上で動作していて、ASP.netを使用していません。このweb siteはasp.netでSSLを実装するためにどのようなコードを実際に使用するかを記述しており、this siteは証明書を設定する方法を説明しています(IISに対してのみ動作するかどうかはわかりませんが)。私はHttpListenerをを使用する.NETアプリケーションにSSLを追加するにはどうすればよい - それは* * IIS
クラスのドキュメントでは、さまざまな種類の認証(基本、ダイジェスト、Windowsなど)について説明しています。いずれもSSLを参照していません。 HTTPS is used, you will need to set a server certificateの場合はそれが言います。これは1行のプロパティの設定になり、HttpListener
は残りの部分を見つけますか?
要するに、私は証明書を設定する方法とSSLを実装するコードを変更する方法を知る必要があります。
私はHTTPSにアクセスしようとしているとき、それは発生しませんが、私は私のシステムイベントログにエラーを気づかなかった - ソースが「のSchannel」で、メッセージの内容は次のとおりです。
をSSLサーバーの資格情報 秘密鍵にアクセスしようとすると、致命的なエラーが発生しました。暗号モジュールから返されるエラーコード は 0x80090016です。
編集:これまでの HTTP接続のために働くのC#(例: "http://localhost:8089/foldername/" makecert.exe を使用して証明書を作成し
- を取ら
手順 - certmgr.exeを使用して信頼できる証明書を追加しました。
- 使用したHttpcfg.exeにより、 rテストポート上のSSL接続。 8090 listener.Prefixes.Add(https://localhost:8090/foldername/経由HttpListenerをする)
- 追加ポート8080に ");
- HTTPクライアント接続、例えば(http://localhost:8089/foldername/テスト" のブラウザで)と
- 正しいリターンを受け取るには、HTTPSクライアントをテスト接続、例えば(http://localhost:8090/foldername/ ")をブラウザーで開き、" Data Transfer Interrupted "(Firefox)
- のビジュアルスタジオでデバッグすると、HTTPS接続の開始時に要求を受け取るリスナーコールバックが決してヒットしないことがわかります。私は他に早く何かをキャッチするブレークポイントを設定することができます。
- netstatコマンドは、リスニング・ポートの両方HTTPSとHTTPのために開いていることを示しています。接続が試行された後、HTTPSポートがTIME_WAITに行くん。
- FiddlerこととHTTPAnalyzerドン」トラフィックのいずれかをキャッチする、私はそれらのHTTP分析ツールに表示するプロセスでは十分に得ることはないと思います の
質問
- 問題は何だろうか?
- 私は紛失しています(つまり、私が行ったことであるHTTPSを指すリスナーにプレフィックスを追加する以外はC#でもっとやりなさいという意味です)
- ありがとうどこかの設定ステップ?
- 問題を分析するために他に何ができますか?
- システムイベントログのエラーメッセージに問題の兆候がありますか?もしそうなら、それはどのように修正されますか?
このコードを[Nugetパッケージ](https://www.nuget.org/packages/SslCertBinding.Net/)として公開しました。それを自由に使用してください。 –