【问题标题】:WCF Certificate permissions problemsWCF 证书权限问题
【发布时间】:2013-05-27 10:11:51
【问题描述】:

我现在在 QA 中使用 SSL 的自签名 (makecert.exe) 证书测试自托管 WCF 服务。如果使用管理员权限和 .BAT 文件启动 Web 服务,则程序启动 SSL 端点没有问题。

但是,如果我将 Web 服务作为普通 Windows 服务启动,以“NT Authority\System”身份运行,程序将经常(但并非总是?!)无法启动,抛出“可能没有私有能够进行密钥交换的密钥,或者进程可能没有访问私钥的权限”

这是我使用的 makecert 命令:

makecert  -iv Cas_temp_Authority.pvk -n "CN=ServerName" ServerName.cer -sv 
ServerName.pvk -ic ServerName.cer -sr localmachine -ss my -sky exchange -pe -eku
1.3.6.1.5.5.7.3.1

我使用这个 netshell 命令将证书分配给端口

netsh http add sslcert ipport=0.0.0.0:8086 certhash=755f7fcf49ff3f06d9d7e551a10ef35776f2dc57 
appid={42e1d4bf-7106-4666-90f7-4634456fb7f1} clientcertnegotiation=enable

我使用这个 netshell 命令设置端口权限:

 netsh http add urlacl url=https://+:8086/ServiceName/MethodName/ 
 user="NT Authority\System"

我知道证书或编程代码没有问题;如果出现问题,服务将根本无法启动。这里的问题是它只能以管理员身份使用 .EXE 启动,它不会作为普通的 Windows 服务启动。

如果有任何帮助,我将不胜感激。

【问题讨论】:

  • 您应该检查托管证书的存储位置。
  • Toan,这家店看起来还可以。如果服务在以管理员身份运行时可以找到证书,它不应该找到它作为“NT Authority\System”吗?这就是这个问题令人困惑的地方。

标签: wcf permissions certificate


【解决方案1】:

您是否尝试过使用微软的winhttpcertcfg 工具?

winhttpcertcfg -g -c LOCAL_MACHINE\MY -s [cert common name] -a "NT Authority\System"

【讨论】:

  • 是的,我试过那个。我想我只是放弃了我在那里尝试做的事情并创造了一个解决方法。不过,谢谢。
猜你喜欢
  • 2011-01-18
  • 1970-01-01
  • 2010-10-24
  • 2014-08-25
  • 2011-11-03
  • 1970-01-01
  • 1970-01-01
  • 2015-03-15
  • 1970-01-01
相关资源
最近更新 更多