zoukankan      html  css  js  c++  java
  • WCF服务器证书配置说明-没有能够进行密钥交换的私钥,或者进程可能没有访问私钥的权限

    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

  • 相关阅读:
    Python-sokect 示例
    Python装饰器
    javascript权威指南第22章高级技巧
    javascript权威指南第21章 Ajax和Comet
    javascript权威指南第20章 JSON
    javascript权威指南第17章 错误异常处理
    javascript权威指南第16章 HTML5脚本编程
    Bootstrap 表单布局示例
    javascript权威指南第15章 使用Canvas绘图
    贪心算法学习笔记
  • 原文地址:https://www.cnblogs.com/mqmelon/p/4757651.html
Copyright © 2011-2022 走看看