从站点内检查哪个证书绑定到asp.net站点

时间:2015-06-28 11:59:59

标签: c# asp.net iis ssl

我有一个IIS托管的asp.net(mvc / api等)应用程序,它在有限的上下文(例如App Pool Identity或类似版本)下运行。 环回不可用。 如何从应用程序中检查哪个证书绑定到托管我的应用程序的站点?

E.g。当admin指定IIS中的ssl绑定时。

1 个答案:

答案 0 :(得分:2)

使用Microsoft.Web.Administration API时,您需要为AppPool标识提供对ApplicationHost.config文件的读取权限。

然而,即使该文件具有您网站的绑定,也没有使用哪个证书的信息,因此API无济于事。

在命令行上,您可以执行以下操作:

netsh http show

SSL Certificate bindings:
IP:port                      : 0.0.0.0:443
Certificate Hash             : aef3b8daaaabe075555534943c53f8727c32c96ef
Application ID               : {4dc3e181-e14b-4a21-b022-59fc669b0914}
Certificate Store Name       : My

要解析输出,您需要知道可以通过Microsoft.Web.Administration API获得的绑定。

证书哈希也是指纹,您可以在PowerShell中获得更多信息:

Get-Item Cert:\LocalMachine\My\aef3b8daaaabe075555534943c53f8727c32c96ef| fl *

这两个命令在用作标准用户时都有效,这可能意味着它们也可以在AppPool标识下工作吗?

我不确定调用哪些API来获取此信息,在最坏的情况下,您可以尝试执行这些命令并解析其输出。

拥有每天运行的PowerShell脚本会更容易,并在每个站点中创建一个包含证书信息的文本文件。然后你的代码只读取文件。