尝试连接到服务时出现 TLS 错误

TLS error when trying to connect to service

我有一个奇怪的问题。我有一个不是我自己构建的外部 dll,因此无法访问通过 https 调用某种 Web 服务并使用 .pfx 证书进行身份验证的源代码。它似乎使用正常的 WebRequest.Create 调用。它在我的开发机器上运行良好,但是当我将它移动到 QA 机器(Azure VM)时,它失败并出现错误,

The request was aborted: Could not create SSL/TLS secure channel.

在事件日志中,

A fatal error occurred while creating a TLS client credential. The internal error state is 10013

在服务器上(由许多其他站点共享)我检查了

的注册表设置

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server

并且 1.2 已启用,但所有其他协议均已禁用且没有特殊设置,

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework\v4.0.30319

现在有趣的部分是我制作了一个小型控制台应用程序,它与网站做同样的事情,当我 运行 它在服务器上工作正常并且如果我将应用程序池用户从指定的用户到我自己的用户,我用来连接到该网站的服务器也 运行 没问题。我没有对注册表进行任何更改,我很高兴尝试让托管团队进行更改并尝试,但首先我想尝试了解该应用程序如何与一个用户一起工作,但如果它是注册表,则不能与另一个用户一起工作不是用户特定的设置。或者是否可以对该问题进行其他解释。

编辑:我们 运行 .NET Framework 4.7.2,用于网站和测试控制台应用程序。

经过大量谷歌搜索,我们终于在这里找到了解决方案,https://www.windowstechupdates.com/solved-the-request-was-aborted-could-not-create-ssl-tls-secure-channel/。所需要做的只是将应用程序池上的设置 Load User ProfileFalse 更改为 True。默认值是 True 但由于某些原因在我们的托管环境中它被设置为 False

这里还有更多信息What exactly happens when I set LoadUserProfile of IIS pool?