最近の太字の編集
は .netHttpListener
クラスを使用していますが、IIS でこのアプリケーションを実行する予定はなく、ASP.net も使用していません。このWeb サイトでは、asp.net で SSL を実装するために実際に使用するコードについて説明し、このサイトでは証明書のセットアップ方法について説明しています (IIS でのみ機能するかどうかはわかりませんが)。
クラスのドキュメントには、さまざまな種類の認証 (基本、ダイジェスト、Windows など) が記載されています --- いずれも SSL について言及していません。HTTPS を使用する場合は、サーバー証明書を設定する必要があります。これは 1 行のプロパティ設定でHttpListener
残りを把握することになるのでしょうか?
つまり、証明書を設定する方法と、コードを変更して SSL を実装する方法を知る必要があります。
HTTPS にアクセスしようとしているときには発生しませんが、システム イベント ログにエラーがあることに気付きました。ソースは「Schannel」で、メッセージの内容は次のとおりです。
SSL サーバー資格情報の秘密鍵にアクセスしようとしたときに、致命的なエラーが発生しました。暗号化モジュールから返されたエラー コードは 0x80090016 です。
編集:
これまでに行った手順
- C# で、HTTP 接続で機能する HTTPListener を作成しました (例: " http://localhost:8089/foldername/ "
- makecert.exe を使用して証明書を作成しました
- certmgr.exe を使用して信頼される証明書を追加しました
- Httpcfg.exe を使用して、テスト ポート (8090 など) で SSL 接続をリッスンしました。
- listener.Prefixes.Add( https://localhost:8090/foldername/ ");を介してポート 8080 を HTTPListener に追加しました。
- ブラウザーでHTTP クライアント接続 ( http://localhost:8089/foldername/ ") などをテストし、正しいリターンを受け取りました
- ブラウザーでHTTPS クライアント接続をテストしました (例: http://localhost:8090/foldername/ ")。"Data Transfer Interrupted" を受け取りました (Firefox の場合)。
- Visual Studio でデバッグすると、HTTPS 接続の開始時に、リクエストを受信するリスナー コールバックがヒットしないことがわかります。以前に何かをキャッチするためにブレークポイントを設定できる場所がありません。
- netstat は、リッスン ポートが HTTPS と HTTP の両方に対して開いていることを示しています。接続が試行された後、HTTPS ポートは TIME_WAIT になります。
- FiddlerとHTTPAnalyzerはトラフィックをまったくキャッチしません。これらの HTTP 分析ツールに表示されるまでには、プロセスが十分に進んでいないと思います。
質問
- 問題は何でしょうか?
- 欠落している.Netコードはありますか(つまり、HTTPSを指すリスナーにプレフィックスを追加するだけでなく、C#でさらに多くのことを行う必要があります。これは私が行ったことです)
- どこかで設定手順を見逃していませんか?
- 問題を分析するために他に何ができますか?
- システム イベント ログのエラー メッセージは問題の兆候ですか? もしそうなら、それはどのように修正されますか?