因此,HTTPS非常容易用于为站点创建HTTPS和HTTPS绑定:
using (ServerManager manager = new ServerManager())
{
Site site = manager.Sites[siteName];
site.Bindings.Clear();
site.Bindings.Add("*:80:", "http");
site.Bindings.Add("*:443:", "https");
manager.CommitChanges();
}但是,没有SSL证书,HTTPS绑定是非常没有意义的。如何使用此API以编程方式选择cert文件并将其与HTTPS绑定一起使用?
发布于 2011-03-01 00:42:54
有一个方法重载用于添加绑定,该绑定将正确地将证书添加到HTTP.sys,请参阅:http://msdn.microsoft.com/en-us/library/bb355650(v=VS.90).aspx
您还可以选择实际设置绑定设置:
binding.CertificateHash和binding.CertificateStoreName,在执行时将正确地向HTTP.sys:属性(v=VS.90).aspx注册。
发布于 2011-12-12 11:57:08
Bindings.Add()方法具有传递SSL证书的重载。如果您已经有了SSL证书,可以从SSL证书存储区中选择它,如下所示:
var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.OpenExistingOnly);
var certificate = store.Certificates.Find(X509FindType.FindByThumbprint, the thumbprint for the key", true);
var site = _mgr.Sites[name];
site.Bindings.Add("*:4043:", certificate[0].GetCertHash(), "MY");运行代码后,可以通过从命令行运行此代码来检查它是否正常工作:
netsh http show sslcert发布于 2012-02-09 10:47:44
如果您需要证书散列(即一台具有各种SSL证书的机器上的多个if ),则需要知道如何获取证书/散列。下面的几行演示了如何找到信息,因为MSDN文档对于这个主题来说太差了。
--您不能使用ServerManager.OpenRemote()远程更新SSL绑定--这似乎存在一个错误。Appcmd也帮不了你。
如果要将字节字符串转换回字节数组(如果您知道哈希),则这是怎么做的
static void Main(string[] args)
{
var store2 = new X509Store(StoreName.TrustedPublisher, StoreLocation.LocalMachine);
Console.WriteLine("TrustedPublisher:");
PrintCerts(store2);
Console.WriteLine();
Console.WriteLine("MY:");
store2 = new X509Store(StoreName.My, StoreLocation.LocalMachine);
PrintCerts(store2);
Console.WriteLine();
Console.WriteLine("CertificateAuthority:");
store2 = new X509Store(StoreName.CertificateAuthority, StoreLocation.LocalMachine);
PrintCerts(store2);
Console.WriteLine();
}
static string PrintHash(byte[] cert)
{
StringBuilder builder = new StringBuilder();
foreach (byte b in cert)
{
builder.AppendFormat("{0:x2}", b);
}
return builder.ToString();
}
static void PrintCerts(X509Store store)
{
store.Open(OpenFlags.OpenExistingOnly);
foreach (var cert in store.Certificates)
{
Console.Write("{0} - {1}", cert.FriendlyName, PrintHash(cert.GetCertHash()));
Console.WriteLine();
}
}示例输出:
我的: www.awesomesite.com - cc2b5fc8216a949b58aadc21089c12b2c090f6bd
https://stackoverflow.com/questions/5083732
复制相似问题