首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Microsoft.Web.Administration以编程方式安装SSL证书

使用Microsoft.Web.Administration以编程方式安装SSL证书
EN

Stack Overflow用户
提问于 2011-02-22 20:42:54
回答 7查看 11.6K关注 0票数 13

因此,HTTPS非常容易用于为站点创建HTTPS和HTTPS绑定:

代码语言:javascript
运行
复制
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绑定一起使用?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 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注册。

票数 7
EN

Stack Overflow用户

发布于 2011-12-12 11:57:08

Bindings.Add()方法具有传递SSL证书的重载。如果您已经有了SSL证书,可以从SSL证书存储区中选择它,如下所示:

代码语言:javascript
运行
复制
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");

运行代码后,可以通过从命令行运行此代码来检查它是否正常工作:

代码语言:javascript
运行
复制
netsh http show sslcert
票数 7
EN

Stack Overflow用户

发布于 2012-02-09 10:47:44

如果您需要证书散列(即一台具有各种SSL证书的机器上的多个if ),则需要知道如何获取证书/散列。下面的几行演示了如何找到信息,因为MSDN文档对于这个主题来说太差了。

--您不能使用ServerManager.OpenRemote()远程更新SSL绑定--这似乎存在一个错误。Appcmd也帮不了你。

如果要将字节字符串转换回字节数组(如果您知道哈希),则这是怎么做的

代码语言:javascript
运行
复制
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

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5083732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档