2010-11-24 65 views
0

假設系統S擁有證書C。以下報價表明,如果C將被S's服務應用程序用於向客戶端認證,那麼C應存儲在LCS中。但是,如果C是由S's客戶端應用程序可以用來驗證自己的服務,那麼C應保存在裏面CUS在什麼證書商店我們應該把服務器的證書

•本地計算機存儲(LCS)。 這包含由機器進程訪問的證書 ,如 ASP.NET。使用此位置可將 服務器認證到 服務器的證書存儲到客戶端。

•當前用戶存儲(CUS)。交互 應用程序通常將 證書放在此處,用於計算機的當前用戶 。如果您正在創建一個 客戶端應用程序,那麼這通常是您將 用戶認證到服務的證書。

但接下來的報價有點否定了上述,因爲它說,如果S's服務嵌入在用戶帳戶下運行的應用程序,那麼證書C應保存在裏面CUS

選擇在哪裏存儲證書 取決於如何以及何時該服務或 客戶端運行。以下一般 規則:

•如果該服務是一個Windows服務, 下 網絡服務帳戶沒有任何用戶界面中的「服務器」模式 運行的服務,使用本地 計算機存儲。請注意,需要管理員 權限才能將 證書安裝到本地機器 存儲中。

•如果服務或客戶端在該下 用戶帳戶運行的應用程序嵌入 ,然後使用當前 用戶存儲。

a)什麼意思是服務被嵌入到應用程序中?在Net中運行WCF服務。控制檯應用程序還是在Asp.Net應用程序中考慮嵌入?

b)爲什麼如果應用程序(嵌入WCF服務)在用戶帳戶下運行(即使此帳戶具有管理員權限),應該將證書放在CUS?這是否意味着它位於LCS之內,那麼S(又名客戶端應用程序試圖將此證書發送到服務器)將無法找到證書?

謝謝

回答

2

一)一個.NET控制檯應用程序內運行的WCF服務將按照這樣的描述被認爲是「嵌入式」服務。這也被稱爲自託管服務。

如果服務在ASP.Net應用程序中運行,那麼它取決於哪個進程託管ASP.Net應用程序,但通常這會被視爲以「服務器」模式運行的服務。

b)爲了使服務向客戶端進行身份驗證,運行服務進程的用戶需要訪問與該證書相對應的私鑰。實現此目的最便利的方法是在運行該進程的用戶的證書存儲區中安裝證書(使用私鑰)。

只要安全權限允許,任何以任意用戶身份運行的應用程序都可以訪問存儲在本地計算機存儲中的證書和私鑰。

這一切歸結爲正在運行的進程的身份以及它是否有權訪問與所需證書相關的私鑰。

+0

「只要安全權限允許,任何用戶都可以訪問存儲在本地計算機存儲中的證書和私鑰,這是可能的。」 A - 因此,如果運行服務的用戶帳戶具有足夠的安全權限,那麼當此服務需要證書時,它將同時搜索CUS和LCS? B - 如果客戶端應用程序也有足夠的權限,我們是否也可以將其證書放入LCS? – user437291 2010-11-24 21:25:05