您的位置:首页 > 其它

WCF部署:让IIS有权限访问证书文件

2010-04-24 15:36 295 查看
默认情况下,只有所有者和“系统”帐户才可以访问证书的私钥文件。

1. 证书的私钥文件在计算机上的存储位置?
Windows xp存放在:C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys
Windows vista存放在:C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys

2. 哪个文件才是我们要找的证书的私钥文件?
Crypto\RSA\MachineKeys 这个文件里可能有很多文件,有几种方法可以确定。
1)根据文件的修改日期
2)如果根据文件的修改日期,不能确定是哪个文件,可以使用FindPrivateKey这个工具来获取证书的完整路径。
FindPrivateKey 工具需要证书存储区名称、证书存储区位置以及可以唯一标识此证书的信息。
FindPrivateKey 工具接受将证书的主题名称或其指纹作为唯一标识符。
下面的代码示例使用 FindPrivateKey 工具来确定指纹为
46 dd 0e 7a ed 0b 7a 31 9b 02 a3 a0 43 7a d8 3f 60 40 92 9d
的证书的私钥在 LocalMachine 的 My 存储区中的位置:
findprivatekey.exe My LocalMachine -t "46 dd 0e 7a ed 0b 7a 31 9b 02 a3 a0 43 7a d8 3f 60 40 92 9d" -a
3)哪里获取 FindPrivateKey 这个工具?
这里是 FindPrivateKey 的源代码:FindPrivateKey.7z

3. WCF 运行时所使用的是哪个帐户?

方案

进程标识

客户端(控制台或 WinForms 应用程序)。

当前登录的用户。

自承载服务。

当前登录的用户。

在 IIS 6.0 (Windows Server 2003) 或 IIS 7.0 (Windows Vista) 中承载的服务。

NETWORK SERVICE

4. 如何把证书私钥文件的读访问权限授予WCF所使用的帐户?
1)通过资源管理器->文件属性->安全,来设置证书私钥文件读访问权限
2)使用 cacls.exe 等工具来设置证书私钥文件读访问权限。
下面的代码示例编辑 (/E) 指定文件的访问控制列表 (ACL),以向“NETWORK SERVICE”帐户授予 (/G) 对此文件的读 (:R) 访问权限:cacls.exe "C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys\8aeda5eb81555f14f8f9960745b5a40d_38f7de48-5ee9-452d-8a5a-92789d7110b1" /E /G "NETWORK SERVICE":R

参考资料:如何:使 X.509 证书可由 WCF 访问, WCF的用户名密码认证
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐