2015-06-28 49 views
2

我有一個IIS託管的asp.net(mvc/api等)應用程序在有限的上下文(例如應用程序池標識或類似)下運行。 環回不可用。 如何檢查哪個證書綁定到從應用內託管我的應用的網站?檢查哪個證書綁定到一個asp.net站點從站點內

E.g.當管理員在IIS中指定ssl綁定時。

+0

由於IIS是守護者,我不確定你可以,除非有一個我不知道的API。我認爲在ASP.NET中唯一的區域可能是通過HttpContext.Server或HttpContext.Request.ServerVariables。不知道關鍵是什麼,但你可以通常在網上找到一個列表。 –

回答

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 * 

以標準用戶使用時,這兩個命令的工作,這可能意味着他們還根據程序池的身份工作?

我不確定要調用哪些API來獲取此信息,最糟糕的情況是您可以嘗試執行這些命令並解析其輸出。

每天運行一個PowerShell腳本會更容易,並且會在每個站點中使用關於證書的信息創建一個文本文件。您的代碼然後只是讀取文件。

相關問題