首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过代码将现有SSL证书分配给新IIS站点?

如何通过代码将现有SSL证书分配给新IIS站点?
EN

Stack Overflow用户
提问于 2021-12-03 09:28:59
回答 1查看 212关注 0票数 1

我正在为测试环境开发一个简单的工具,在这个工具中,我必须通过C#代码设置几十个站点。因此,我在数组中有一个(子)域名(和其他属性)的列表,并通过它来创建带有绑定的站点。这很好,除了HTTPS绑定之外,我需要从存储区绑定适当的SSL证书。无论出于什么原因,所有网站最终都会获得相同的证书。

代码相对简单明了。我首先像这样打开证书存储:

代码语言:javascript
复制
var store = new X509Store("MY", StoreLocation.LocalMachine);
store.Open(OpenFlags.OpenExistingOnly);

然后,我为每个域找到一个证书,其中Certificate.Subject.EndsWith(domain.Domain)也可以正常工作。我会显示散列和名字,这些都是正确的。

然后,我继续在端口80上创建具有基本绑定的每个域:

代码语言:javascript
复制
var site = manager.Sites.Add(domain.Name, "http", $"*:80:{domain.Domain}", domain.Folder);

如果找到证书,我还将绑定HTTPS连接:

代码语言:javascript
复制
site.Bindings.Add($"*:443:{domain.Domain}", domain.Certificate.GetCertHash(), "MY");

我还将哈希写入控制台,以确保我有正确的值!然后调用manager.CommitChanges();来提交添加的站点。

然后,我在IIS中检查了附加了哪个证书,结果证明是错误的!所以每个网站都有一个证书错误,我不明白为什么会出错,因为一切似乎都是正确的。

因此,在提交之后,我再次通过枚举到控制台的绑定来打印哈希,它仍然显示正确的哈希。这实在是太烦人了!

至于被挑选的证书..。它似乎是我列表中最后一个域的证书。但是为什么它被分配到所有其他绑定中呢?

这是IIS管理器中的错误吗?

一个小发现:我去了IIS并将证书更改为适当的证书。这将导致IIS中的此消息:

这很有趣,因为当我单击“是”时,它将更改所有站点的证书。如果我点击“否”,那么我回到编辑对话框,这样就不会解决任何问题。不过,别以为这有关系.

EN

Stack Overflow用户

回答已采纳

发布于 2021-12-03 14:44:38

德姆!德姆!哑巴!解决了它..。

代码语言:javascript
复制
site.Bindings.Add($"*:443:{domain.Domain}", domain.Certificate.GetCertHash(), "MY", SslFlags.Sni);

最后的SslFlags.Sni标志,作为第5个参数,起了作用。它代表“服务器名称指示”,呵呵!显然你需要它如果你用域名绑定证书..。

这么小的事情会很烦人的..。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70212065

复制
相关文章

相似问题

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