我有一个c#web API,它使用客户端证书连接到第三方标识提供程序(BankID https://www.bankid.com/en/)。
在Visual Studio中运行时,连接握手正常。但后来我将它部署到在Azure上的虚拟机上运行的IIS,由于某种原因现在它不能按预期工作,而是我得到一个例外:
“请求已中止:无法创建SSL / TLS安全通道。”
我在VM上安装了Visual Studio,并验证它是否有效;我已经在本地计算机上安装了IIS并验证了它的工作原理。所以它似乎是Azure VM上的IIS的组合:s。
起初我以为可能是客户证书没有从证书商店中取出。但我添加了“未找到证书”的处理,但这并没有触发。
我还尝试过从文件中提取证书的替代方法。但这也不起作用。
非常感谢一些帮助!
答案 0 :(得分:0)
尝试将它放在构造函数中:
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11;
答案 1 :(得分:0)
我设法找出问题所在。 IIS用户(IIS_IUSRS)没有使用私钥的权限。所以它实际上与Azure无关。
对于遇到同一问题的任何人,请在此处查看详细答案:https://stackoverflow.com/a/2647003/8721876。