Программно импортировать и связывать сертификат SSL - PullRequest
1 голос
/ 24 февраля 2020

Я работаю над добавлением поддержки SSL-сертификата в VB. Net API, и у меня возникают проблемы с выполнением этого через код. Я могу заставить его работать, если я вручную импортирую сертификат в IIS и затем запускаю свои команды netsh. У меня есть сертификат, созданный с помощью mkcert и импортируемый в IIS.

  1. Импорт сертификата в IIS
  2. cmd: netsh http delete sslcert ipport=0.0.0.0:443
  3. Запуск мой API, использующий https / 443 baseurl
  4. Это работает как задумано.

Когда я пытаюсь сделать это с помощью кода, он не работает, я получаю netsh error a specified logon session does not exist. Вот код, который я использую для импорта и привязки сертификата.

' Import the certificate into IIS LocalComputer, this is needed for the ip address bindings.
Dim IIS = New X509Store(StoreName.My, StoreLocation.LocalMachine)
IIS.Open(OpenFlags.ReadWrite)
Try
    For Each certificate As X509Certificate2 In x509
        IIS.Add(certificate)
    Next
Finally
    IIS.Close()
End Try

' Bind the SSL Cert to the network address and port.
Dim p As Process = New Process()
Dim pi As ProcessStartInfo = New ProcessStartInfo()
Dim cmd As String = " /K " + "netsh http add sslcert ipport=0.0.0.0:" + port.ToString() + " certhash=" + CertificateThumbprint + " appid={myAppId}"
Console.WriteLine(cmd)
pi.Arguments = cmd
pi.FileName = "cmd.exe"
p.StartInfo = pi
p.Start()

1 Ответ

0 голосов
/ 25 февраля 2020

Так что я смог заставить это работать, изменив следующее:

Try
    Dim certificate = New X509Certificate2(CertificatePath, CertificatePassword, X509KeyStorageFlags.Exportable Or X509KeyStorageFlags.MachineKeySet)
    IIS.Open(OpenFlags.ReadWrite)
    IIS.Add(certificate)
Finally
    IIS.Close()
End Try
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...