WCF服务器证书配置说明

来源:互联网 发布:python pip 编辑:程序博客网 时间:2024/06/06 08:49

版权声明

请尊重原创作品。转载请保持文章完整性,并以超链接形式注明原始作者“tingsking18”和主站点地址,方便其他朋友提问和指正。

 

WCF服务器证书配置说明
1.创建证书:
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的证书就配置完毕了。
1和2的具体操作请查阅MSDN,上面有更详细的解释!

如果你在调试或者是运行的时候遇到如下的错误:
[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上运行,你要为NETWORK SERVICE帐户添加权限,而不是ASP.NET.

原创粉丝点击