Vb.net 以编程方式导入和绑定SSL证书
我正在致力于将SSL证书支持添加到VB.NETAPI中,但在通过代码实现这一点时遇到了问题。如果我手动将证书导入IIS,然后运行netsh命令,我就可以让它工作。我有一个用Vb.net 以编程方式导入和绑定SSL证书,vb.net,iis-7,ssl-certificate,iis-7.5,netsh,Vb.net,Iis 7,Ssl Certificate,Iis 7.5,Netsh,我正在致力于将SSL证书支持添加到VB.NETAPI中,但在通过代码实现这一点时遇到了问题。如果我手动将证书导入IIS,然后运行netsh命令,我就可以让它工作。我有一个用mkcert创建的证书,它正在导入IIS 将证书导入IIS cmd:netsh http delete sslcert ipport=0.0.0.0:443 使用https/443 baseurl启动我的API 这正是我们想要的 当我试图通过代码执行此操作时,发现netsh error指定的登录会话不存在。下面是我用来导入和绑
mkcert
创建的证书,它正在导入IIS
netsh http delete sslcert ipport=0.0.0.0:443
指定的登录会话不存在
。下面是我用来导入和绑定证书的代码
' 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()
因此,我可以通过更改以下内容来实现这一点:
Try
Dim certificate = New X509Certificate2(CertificatePath, CertificatePassword, X509KeyStorageFlags.Exportable Or X509KeyStorageFlags.MachineKeySet)
IIS.Open(OpenFlags.ReadWrite)
IIS.Add(certificate)
Finally
IIS.Close()
End Try
因此,我可以通过更改以下内容来实现这一点:
Try
Dim certificate = New X509Certificate2(CertificatePath, CertificatePassword, X509KeyStorageFlags.Exportable Or X509KeyStorageFlags.MachineKeySet)
IIS.Open(OpenFlags.ReadWrite)
IIS.Add(certificate)
Finally
IIS.Close()
End Try
PInvoke HTTP API,你得到你想要的,PInvoke HTTP API,你得到你想要的,