SignalR z Self-Signed SSL i Self-Host

Próbowałem szczęścia w badaniach, ale do tej pory nie miałem radości.

Chciałbym podłączyć klienta SignalR javascript do samodzielnego hostowania usługi Windows SignalR do samopodpisanego certyfikatu SSL.

Moja aplikacja działa całkiem nieźle przez http, ale klient wielokrotnie rozłącza się, gdy aplikacja Owin WebApplication zaczyna korzystać z https.

Oto co zrobiłem, aby skonfigurować SignalR z SSL.

Utworzono certyfikat samopodpisany przy użyciu usług IISZaimportowano certyfikat do zaufanych głównych urzędów certyfikacji w mmc (nie wiem, czy to pomogło)

Uruchomiono polecenie NETSH, aby powiązać protokół SSL z portem 8080

netsh http add sslcert ipport=0.0.0.0:8080 certhash=123456f6790a35f4b017b55d09e28f7ebe001bd appid={12345678-db90-4b66-8b01-88f7af2e36bf}

Dodano kod w samo-hostowanych instancjach HubConnection, aby dodać eksportowany SSL w ten sposób (choć nie powinno to mieć znaczenia, ponieważ to klient nie może się połączyć):

if (File.Exists("MyCert.cer") 
    && Settings.GetSetting(Settings.Setting.SrProtocol).Equals("https", StringComparison.InvariantCultureIgnoreCase))
        connection.AddClientCertificate(X509Certificate.CreateFromCertFile("MyCert.cer"));

Uruchamianie aplikacji Owin WebApplication przy użyciu https (powinno to utworzyć powiązanie w http.sys)

string registerUrl = string.Format("{0}://SOME.WHERE.COM:{1}", Service.Server.SrProtocol, Service.Server.SrPort);
WebApp.Start<StartUp>(registerUrl);

W dokumentacji SignalR 2.0 jest napisane:

Aby uruchomić serwer WWW, wywołaj WebApplication.Start (punkt końcowy). Teraz powinieneś być w stanie przejść do punktu końcowego / sygnału / koncentratorów w przeglądarce.

Kiedy przeglądam adres URLhttp://SOME.WHERE.COM:8080/signalr/hubs Udało mi się otrzymać javascript, który steruje SignalR.

Kiedy przeglądam adres URLhttps://SOME.WHERE.COM:8080/signalr/hubs Nie udało mi się i otrzymuję komunikat „Połączenie z serwerem zostało zresetowane” za pomocą FF.

Kilka dodatkowych punktów, które rozważałem:

NETSH SHOW wskazuje, że adres URL jest zarejestrowany

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 oznacza, że ​​certyfikat SSL jest powiązany z 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

Każda pomoc jest bardzo mile widziana!

questionAnswers(1)

yourAnswerToTheQuestion