SignalR с самоподписанным SSL и Self-Host
Испытал мою удачу в исследованиях, но пока радости нет.
Я хотел бы подключить клиент JavaScript SignalR к самосмещенной службе Windows SignalR, привязывающей к самозаверяющему SSL-сертификату.
Мое приложение работает достаточно хорошо по протоколу http, но клиент периодически отключается, когда веб-приложение Owin начинает использовать https.
Вот что ясделано для настройки SignalR с SSL.
Создан самоподписанный сертификат с использованием IISИмпортировал сертификат в доверенные корневые центры сертификации в mmc (не уверен, помогло ли это)Запустил команду NETSH для привязки SSL к порту 8080
netsh http add sslcert ipport=0.0.0.0:8080 certhash=123456f6790a35f4b017b55d09e28f7ebe001bd appid={12345678-db90-4b66-8b01-88f7af2e36bf}
Добавлен код в автономных экземплярах HubConnection для добавления экспортированного SSL, как это (хотя это не должноне имеет значения, потому что этоs клиент, который не может подключиться):
if (File.Exists("MyCert.cer")
&& Settings.GetSetting(Settings.Setting.SrProtocol).Equals("https", StringComparison.InvariantCultureIgnoreCase))
connection.AddClientCertificate(X509Certificate.CreateFromCertFile("MyCert.cer"));
Запуск Owin WebApplication с использованием https (это должно создать привязку в http.sys)
string registerUrl = string.Format("{0}://SOME.WHERE.COM:{1}", Service.Server.SrProtocol, Service.Server.SrPort);
WebApp.Start(registerUrl);
В документации SignalR 2.0 говорится:
Чтобы запустить веб-сервер, вызовите WebApplication.Start (конечная точка). Теперь вы должны иметь возможность перейти к конечной точке / сигнализаторам / концентраторам в вашем браузере.
Когда я просматриваю URLhttp://SOME.WHERE.COM:8080/signalr/hubs Я успешно получаю JavaScript, который управляет SignalR.
Когда я просматриваю URLhttps://SOME.WHERE.COM:8080/signalr/hubs Я неудачен и получаюСоединение с сервером было сброшено используя FF.
Некоторые дополнительные пункты I 'мы рассмотрели:
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
Любая помощь с благодарностью!