2012-06-22 56 views
1

我正在開發一個WCF服務,它使用SSL證書來保證傳輸安全。如何讓certmgr爲所有用戶而不是當前用戶添加pfx?

我遵循各種教程和線索提示生成和導入證書。該證書是使用下面的命令輸入:

certmgr.exe -add -all -c <filename>.pfx -s -r localMachine my 

我的WCF服務運行愉快下使用控制檯模式導入的證書。當我將服務切換到作爲「網絡服務」運行的Windows服務時,問題就開始了。例外是抱怨應用程序無法訪問安裝的私鑰。

所以我用FindPrivateKey.exe,發現私鑰實際上是安裝在當前用戶的AppData文件夾:

C:\Users\<username>\AppData\Roaming\Microsoft\Crypto\RSA\S-1-5-21-3289377140-263254259-3378496556-1105\d3a0de64e6f0513692d593a77a71d3ac_15824a33-515a-493c-a33f-38a7b852e11a 

它不會,即使我授予「網絡服務」用戶的訪問權工作到這個文件。

最後我不得不刪除的證書,並重新導入使用MMC,裏面放置私鑰:

C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\c3ccd4300462fe2aa7cec7f747fbd075_15824a33-515a-493c-a33f-38a7b852e11a 

所以我的問題是,我怎麼能得到certmgr放置C:\ ProgramData \中的私鑰,而不是當前用戶的AppData?

回答

1

您不應該嘗試在文件級別使用證書。這是內部實施,不保證支持。

有MS工具,它可以幫助你:

在Microsoft Windows HTTP服務(WinHTTP)證書 配置工具,「WinHttpCertCfg.exe」,使管理員能夠 安裝和配置任何客戶端證書可以通過Internet服務器Web應用程序管理器 (IWAM)帳戶訪問的證書存儲區 。

http://msdn.microsoft.com/en-us/library/windows/desktop/aa384088(v=vs.85).aspx

命令,你需要運行:

此命令授予訪問「MyCertificate」 證書中的「我」證書存儲TESTUSER帳戶的私鑰。

winhttpcertcfg -g -c LOCAL_MACHINE\My -s MyCertificate -a TESTUSER 

使用此鏈接來安裝工具:

http://www.microsoft.com/en-us/download/details.aspx?id=19801

+0

我結束了使用下面的命令: winhttpcertcfg.exe -i DV15Server.pfx -c LOCAL_MACHINE \我的-a系統 –

相關問題