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