SignalR mit einem Selbst-Signierten SSL und Self-Host
Versuchte mein Glück bei der Forschung, aber bisher keine Freude.
Möchte ich verbinden eine SignalR-javascript-client, um eine self-hosted-SignalR-Windows-Dienst Bindung an ein selbst-signiertes SSL-Zertifikat.
Meiner Anwendung funktioniert das ganz gut über http, der client aber wiederholt trennt, wenn die Owin WebApplication beginnt mit https.
Hier ist was ich getan habe, zu konfigurieren, SignalR mit SSL.
- Erstellt ein Selbst-Signiertes Zertifikat mithilfe der IIS -
- Importiert das Zertifikat in den Vertrauenswürdigen Stammzertifizierungsstellen in der mmc (nicht sicher, ob das geholfen)
-
Lief NETSH-Befehl zu binden SSL auf port 8080
netsh http add sslcert ipport=0.0.0.0:8080 certhash=123456f6790a35f4b017b55d09e28f7ebe001bd appid={12345678-db90-4b66-8b01-88f7af2e36bf}
-
Code Hinzugefügt selbst gehosteten HubConnection Instanzen hinzufügen exportiert SSL wie folgt aus (allerdings soll dies keine Rolle, weil es den client, kann keine Verbindung):
if (File.Exists("MyCert.cer") && Settings.GetSetting(Settings.Setting.SrProtocol).Equals("https", StringComparison.InvariantCultureIgnoreCase)) connection.AddClientCertificate(X509Certificate.CreateFromCertFile("MyCert.cer"));
-
Ab Owin WebApplication https verwenden (dies sollte die Bindung in http.sys)
string registerUrl = string.Format("{0}://SOME.WHERE.COM:{1}", Service.Server.SrProtocol, Service.Server.SrPort); WebApp.Start<StartUp>(registerUrl);
In SignalR 2.0-Dokumentation heißt es:
Starten Sie den web-server rufen Sie WebApplication.Start(Endpunkt). Sie sollten nun in der Lage sein zu navigieren, endpoint - /signalr/hubs in Ihrem browser.
Wenn ich navigieren Sie zu der URL http://SOME.WHERE.COM:8080/signalr/hubs ich bin erfolgreich empfangen die javascript-Laufwerke, SignalR.
Wenn ich navigieren Sie zu der URL https://SOME.WHERE.COM:8080/signalr/hubs ich bin erfolglos und ich bekomme "Die Verbindung zum server wurde zurückgesetzt" mit FF.
Einige zusätzliche Punkte, die ich betrachtet habe:
-
NETSH SHOW zeigt die url registriert ist
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 zeigt das SSL-Zertifikat ist gebunden 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
Jede Hilfe wird sehr geschätzt!
- Hier ist ein link zum blog-post mit, was nötig ist, um sich zu registrieren und erstellen Sie SSL-Zertifikate und wie Sie eingerichtet für SignalR: west-wind.com/weblog/posts/2013/Sep/23/...
- link ist schlecht...
- Für mich funktioniert...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, dass alle seine arbeiten jetzt für mich. Hier ist ein Durchlauf unten der Schritte, die ich nahm, um die Dinge fließen:
SSL-NOTES
SSL & SignalR (Owin WebApplication) erfordert die Bindung eines Zertifikats an einen port.
Führen Sie den folgenden Befehl binden Sie das SSL-Zertifikat auf " 0.0.0.0:8080
Ausgabe:
Führen Sie die folgenden NETSH-Befehl zu reservieren, alle IP-Adressen für port 8080 auf Meine Service-Anwendungs-ID und service-Konto
Ausgabe:
Update der MyServices.exe.config-Datei an, die das https-Protokoll (Dies sind die " appSetting-Tasten verwendet, um dynamisch den Protokoll-und port von SignalR, wenn Mein Dienst beginnt)
Starten Sie das Meinen Dienst, mit dem NETSTAT-Befehl STARTEN
Führen Sie die folgenden NETSH-Befehl zum anzeigen der service-Status ist, belegt die eingetragene url
Ausgabe:
Meine Anwendung NICHT die von IIS abhängen, aber sobald ich den IIS verwendet, um vorübergehend erstellen Sie eine port-Bindung zu meinem SSL-Zertifikat, um meine Anwendung zu arbeiten begonnen, und ich war in der Lage zu überprüfen NETSH servicestate zu sehen, wie IIS tut es. Ich habe da fiel der IIS-Bindung und lief durch den setup-Notizen, und haben immer noch Erfolg.
Mein Aufgrund Start sieht somethign wie diese:
}
- Und self-hosted-HubConnetion Instanzen wie folgt Aussehen:
Es ist ein wenig mehr code als das hier relevant ist, aber ich hoffe, es kann helfen!