第三方供应商正在添加身份验证(yay!),但它并不总是适用于我们(boo!)。
当C#应用程序以“管理员身份”运行时,它可以很好地工作。但是,当应用程序以正常(非管理员)用户的身份运行时,它会在消息中失败。
“身份验证失败,因为远程方已关闭传输流”
我们显式地设置为TLS 1.2
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;我们是
发布于 2017-02-09 21:59:09
我们也在Getting "Could not establish secure channel for SSL/TLS with authority" even though ServerCertificateValidationCallback returns true和winhttpcertcfg giving access to IIS user in Windows 7的帮助下解决了这个问题。
问题是,证书是为“计算机”帐户的受信任人安装的。当在Admin模式下运行时,或者作为一个拥有管理权限的用户,它工作得很好。但是,当作为我们的“服务帐户”运行时(因为它不是真正的服务帐户) --服务帐户没有读取证书的权限。
我们发现,深入挖掘C:\ProgramData\Microsoft\crypto\rsa\machinekeys目录并更改适当的证书的读取权限是有效的。
我们不喜欢使用icacls更改已安装证书的读取权限的建议解决方案(部分原因是实际找到正确的证书条目的艰巨任务)。
我们发现可以将mmc.exe作为服务帐户运行,然后将其安装到该帐户的可信人员级别。然后,,我们的非管理应用程序可以读取证书并建立连接。
发布于 2018-05-24 14:16:07
这可能与OPs最初的问题不同,但我的问题是,我的IIS应用程序使用了Windows 模拟,因此它试图与没有权限这样做的模拟用户一起访问C:\ProgramData\Microsoft\crypto\rsa\machinekeys中的cert文件。
我改变了设计来关闭模拟,这个问题就不复存在了。
https://stackoverflow.com/questions/42145212
复制相似问题