WCF证书权限问题

时间:2013-05-27 10:11:52

标签: wcf permissions certificate

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

但是,如果我作为普通的Windows服务启动Web服务,运行为“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服务启动。

我会感激任何帮助。

1 个答案:

答案 0 :(得分:0)

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

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