Zertifikat an SSL-Port @ registrier

Ich habe einen Windows-Dienst (der als LocalSystem ausgeführt wird), der einen OWIN-Dienst (SignalR) selbst hostet und auf den über SSL zugegriffen werden muss.

Ich kann die SSL-Bindung problemlos auf meinem lokalen Entwicklungscomputer einrichten - und ich kann auf demselben Computer über SSL auf meinen Dienst zugreifen. Wenn ich jedoch zu einem anderen Computer gehe und versuche, den folgenden Befehl auszuführen, wird eine Fehlermeldung angezeigt:

Befehl

netsh http add sslcert ipport=0.0.0.0:9389 appid={...guid here...} certhash=...cert hash here...

Error

SSL-Zertifikat konnte nicht hinzugefügt werden, Fehler: 1312

Eine angegebene Anmeldesitzung existiert nicht. Möglicherweise wurde es bereits beendet.

Das Zertifikat, das ich verwende, ist ein vollständig signiertes Zertifikat (kein Entwicklungszertifikat) und funktioniert auf meiner lokalen Entwickler-Box. Folgendes mache ich:

er Windows-Dienst wird gestartet und registriert mein Zertifikat mit dem folgenden Code:

var store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadWrite);
var path = AppDomain.CurrentDomain.BaseDirectory;
var cert = new X509Certificate2(path + @"\mycert.cer");
var existingCert = store.Certificates.Find(X509FindType.FindByThumbprint, cert.Thumbprint, false);
if (existingCert.Count == 0)
    store.Add(cert);
store.Close();

Ich versuche dann, das Zertifikat mit netsh und dem folgenden Code an Port 9389 zu binden:

var process = new Process {
    StartInfo = new ProcessStartInfo {
        WindowStyle = ProcessWindowStyle.Hidden,
        FileName = "cmd.exe",
        Arguments = "/c netsh http add sslcert ipport=0.0.0.0:9389 appid={12345678-db90-4b66-8b01-88f7af2e36bf} certhash=" + cert.thumbprint
    }
};
process.Start();

Der obige Code installiert das Zertifikat erfolgreich im Zertifikatordner "Lokaler Computer - Zertifikate \ Vertrauenswürdige Stammzertifizierungsstellen \ Zertifikate", aber der Befehl netsh wird mit dem oben beschriebenen Fehler nicht ausgeführt. Wenn ich den Befehl netsh nehme und ihn als Administrator in einer Eingabeaufforderung für dieses Feld ausführe, wird derselbe Fehler auch ausgegeben. Ich glaube also nicht, dass es sich um ein Codeproblem handelt ...

Ich muss mir vorstellen, dass dies möglich ist - viele andere Anwendungen erstellen selbst gehostete Dienste und hosten sie über SSL -, aber ich scheine nicht in der Lage zu sein, dies überhaupt zum Laufen zu bringen ... hat jemand Vorschläge? Vielleicht programmatische Alternativen zu Netsh?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage