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

  • 相关阅读:
    AIX下的ha高可用集群cluster
    触发redo写的几个条件
    Oracle Internals Notes Redo Write Triggers
    触发写Redo Log的条件
    [Oracle]理解undo表空间
    MySQL数据备份之mysqldump使用
    Orabbix无法获取Oracle DB Size和DB Files Size的解决方法
    ES5和ES6那些你必须知道的事儿(三)
    ES5和ES6那些你必须知道的事儿(二)
    ES5和ES6那些你必须知道的事儿(一)
  • 原文地址:https://www.cnblogs.com/anjou/p/1719351.html
Copyright © 2011-2022 走看看