第三方供应商正在添加身份验证(耶!),但它并不总是对我们有用(嘘!)。
当 C# 应用程序以“管理员身份”运行时,它可以正常工作。但是,当应用程序作为普通(非管理员)用户运行时,它会失败并显示消息
“身份验证失败,因为远程方已关闭传输流”
我们明确设置为 TLS 1.2
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
我们是
尽管 ServerCertificateValidationCallback 返回 true以及winhttpcertcfg 也为 Windows 7 中的 IIS 用户提供访问权限,但我们还是在“无法为具有权限的 SSL/TLS 建立安全通道”的帮助下解决了这个问题。
问题在于证书是为“计算机”帐户的受信任人员安装的。当以管理员模式运行或作为具有管理员权限的用户运行时,它运行良好。但是,当作为我们的“服务帐户”运行时(用引号引起来,因为它不是真正的服务帐户)——服务帐户没有读取证书的权限。
我们发现深入C:\ProgramData\Microsoft\crypto\rsa\machinekeys目录并更改适当证书的读取权限是有效的。
我们不喜欢建议的用于icacls更改已安装证书的读取权限的解决方案(部分原因是实际找到正确的证书条目是一项艰巨的任务。)
我们发现我们可以mmc.exe作为服务帐户运行,然后将其安装到该帐户的受信任人员级别。然后我们的非管理应用程序可以读取证书并建立连接。
| 归档时间: | 
 | 
| 查看次数: | 13592 次 | 
| 最近记录: |