Зарегистрировать сертификат на порт SSL

У меня есть служба Windows (запущенная как LocalSystem), которая самостоятельно размещает службу OWIN (SignalR) и должна быть доступна через SSL.

Я могу отлично настроить привязку SSL на своем локальном компьютере разработки - и я могу получить доступ к своему сервису через SSL на том же компьютере. Однако, когда я иду на другую машину и пытаюсь выполнить следующую команду, я получаю сообщение об ошибке:

Команда:

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

Ошибка:

Ошибка добавления сертификата SSL, ошибка: 1312

Указанный сеанс входа не существует. Возможно, оно уже было прекращено.

Сертификат, который я использую, является полностью подписанным сертификатом (не сертификатом разработки) и работает на моем локальном устройстве разработчика. Вот что я делаю:

Служба Windows запускается и регистрирует мой сертификат, используя следующий код:

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();

Затем я пытаюсь привязать сертификат к порту 9389, используя netsh и следующий код:

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();

Приведенный выше код успешно устанавливает сертификат в папку сертификатов «Локальный компьютер - Сертификаты \ Доверенные корневые центры сертификации \ Сертификаты», но команда netsh не запускается с ошибкой, описанной выше. Если я беру команду netsh и запускаю ее в командной строке от имени администратора в этом окне, она также выдает ту же ошибку - поэтому я не верю, что это связано с кодом ...

Я должен представить, что это возможно сделать - множество других приложений создают собственные службы и размещают их через ssl - но я не могу заставить это работать вообще ... у кого-нибудь есть какие-либо предложения? Возможно программные альтернативы netsh?

Ответы на вопрос(2)

Ваш ответ на вопрос