研究で運を試しましたが、今のところ喜びはありません。
SignalR JavaScript クライアントを、自己署名 SSL 証明書にバインドされている自己ホスト型 SignalR Windows サービスに接続したいと考えています。
私のアプリケーションは http 経由で問題なく動作しますが、Owin WebApplication が https の使用を開始すると、クライアントが繰り返し切断されます。
SSL を使用して SignalR を構成するために行ったことは次のとおりです。
- IIS を使用して自己署名証明書を作成しました
- mmcの信頼されたルート証明機関に証明書をインポートしました(それが役に立ったかどうかはわかりません)
NETSH コマンドを実行して、SSL をポート 8080 にバインドしました
netsh http add sslcert ipport=0.0.0.0:8080 certhash=123456f6790a35f4b017b55d09e28f7ebe001bd appid={12345678-db90-4b66-8b01-88f7af2e36bf}
次のようにエクスポートされた SSL を追加するために、自己ホスト型の HubConnection インスタンスにコードを追加しました (接続できないのはクライアントであるため、これは問題ではありません)。
if (File.Exists("MyCert.cer") && Settings.GetSetting(Settings.Setting.SrProtocol).Equals("https", StringComparison.InvariantCultureIgnoreCase)) connection.AddClientCertificate(X509Certificate.CreateFromCertFile("MyCert.cer"));
https を使用して Owin WebApplication を開始します (これにより、http.sys にバインディングが作成されます)。
string registerUrl = string.Format("{0}://SOME.WHERE.COM:{1}", Service.Server.SrProtocol, Service.Server.SrPort); WebApp.Start<StartUp>(registerUrl);
SignalR 2.0 のドキュメントには、次のように書かれています。
Web サーバーを開始するには、WebApplication.Start(endpoint) を呼び出します。これで、ブラウザーで endpoint/signalr/hubs に移動できるはずです。
URL http://SOME.WHERE.COM:8080/signalr/hubsを参照すると、 SignalR を駆動する JavaScript の受信に成功しています。
URL https://SOME.WHERE.COM:8080/signalr/hubsを参照すると失敗し、FF を使用して「サーバーへの接続がリセットされました」というメッセージが表示されます。
私が考慮したいくつかの追加のポイント:
NETSH SHOW は、URL が登録されていることを示します
URL group ID: E300000240000022 State: Active Request queue name: Request queue is unnamed. Properties: Max bandwidth: inherited Max connections: inherited Timeouts: Timeout values inherited Number of registered URLs: 1 Registered URLs: HTTPS://SOME.WHERE.COM:8080/
NETSH SHOW は、SSL 証明書が 8080 にバインドされていることを示します。
IP:port : 0.0.0.0:8080 Certificate Hash : 123456f6790a35f4b017b55d09e28f7ebe001bd Application ID : {12345678-db90-4b66-8b01-88f7af2e36bf} Certificate Store Name : (null) Verify Client Certificate Revocation : Enabled Verify Revocation Using Cached Client Certificate Only : Disabled Usage Check : Enabled Revocation Freshness Time : 0 URL Retrieval Timeout : 0 Ctl Identifier : (null) Ctl Store Name : (null) DS Mapper Usage : Disabled Negotiate Client Certificate : Disabled
どんな助けでも大歓迎です!