zoukankan      html  css  js  c++  java
  • WCF部署:让IIS有权限访问证书文件

    默认情况下,只有所有者和“系统”帐户才可以访问证书的私钥文件。

    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的用户名密码认证

  • 相关阅读:
    Python元组、列表、字典
    测试通过Word直接发布博文
    Python环境搭建(windows)
    hdu 4003 Find Metal Mineral 树形DP
    poj 1986 Distance Queries LCA
    poj 1470 Closest Common Ancestors LCA
    poj 1330 Nearest Common Ancestors LCA
    hdu 3046 Pleasant sheep and big big wolf 最小割
    poj 3281 Dining 最大流
    zoj 2760 How Many Shortest Path 最大流
  • 原文地址:https://www.cnblogs.com/anjou/p/1719351.html
Copyright © 2011-2022 走看看