WCF服務器證書使用說明手冊
WCF服務器證書在進行配置的時候,需要認真的操作,否則將會很容易出現錯誤。在這里,我們就為大家奉獻上相關配置說明,希望對大家有所幫助。#t#
1.創建WCF服務器證書:
makecert.exe -sr LocalMachine -ss My -a sha1 -n CN=XXX -sky exchange -pe
說明:
-sr 選項制定證書的存儲區域,分為CurrentUser和LocalMachine。
-ss 指定主題的證書存儲名稱,輸出證書即存儲在那里。My為個人證書
-a 指定簽名算法。必須是 md5(默認值)或 sha1。
-n 指定主題的證書名稱。此名稱必須符合 X.500 標準。最簡單的方法是在雙引號中指定此名稱,并加上前綴 CN=;例如,"CN=myName"。
-sky指定主題的密鑰類型,必須是 signature、exchange 或一個表示提供程序類型的整數。默認情況下,可傳入 1 表示交換密鑰,傳入 2 表示簽名密鑰。
-pe 將所生成的私鑰標記為可導出。這樣可將私鑰包括在證書中。
XXX為你要創建的證書的名字。
這樣證書就創建完畢了。
2.使用WCF服務器證書。
在< serviceBehavior>下的< serviceCredentials>項下類配置:
< serviceCertificate storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName" findValue="XXXXXXXX"/>
說明:
storeLocation 指定 X.509 證書存儲區的位置。
storeName 指定要打開的 X.509 證書存儲區的名稱。
x509FindType 指定通過 Find 方法搜索的值的類型。
findValue 獲取或設置一個字符串,該字符串指定要在 X.509 證書存儲區中搜索的值。XXXXXXXX為你要查找的證書的名字。
這樣WCF的證書就配置完畢了。
如果你在調試或者是運行的時候遇到如下的錯誤:
[CryptographicException: 密鑰集不存在。]
/> [ServiceActivationException: 由于編譯過程中出現異常,無法激活服務“/ServiceIISHoster/PickingOrderService.svc”。異常消息為: 證書“CN=jingpeng”必須具有能夠進行密鑰交換的私鑰。該進程必須具有訪問私鑰的權限。。]
說明你的ASPNET賬號沒有足夠的權限訪問C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys\。如下設置即可:
cacls.exe "C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys\a3b1d979b0a27545ee038a30b4965335_f83d7378-8540-48f5-acb3-b4b43c8512b1" /E /G ASPNET:R
a3b1d979b0a27545ee038a30b4965335_f83d7378-8540-48f5-acb3-b4b43c8512b1為你剛剛創建的證書的MachineKey
注意:如果是在Windows 2003上運行WCF服務器證書,你要為NETWORK SERVICE帳戶添加權限,而不是ASP.NET.