检查哪个证书从网站中绑定到asp.net网站

本文关键字:网站 绑定 asp net 检查 证书 | 更新日期: 2023-09-27 18:00:04

我有一个IIS托管的asp.net(mvc/api等)应用程序,它在有限的上下文下运行(例如应用程序池标识或类似内容)。环回不可用。如何从应用程序中检查哪个证书绑定到承载我的应用程序的网站?

例如,当管理员在IIS中指定ssl绑定时。

检查哪个证书从网站中绑定到asp.net网站

使用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脚本,并在每个站点中创建一个包含证书信息的文本文件,会容易得多。然后,您的代码只读取文件。