繁体   English   中英

实施 Swish 支付 C# - 仅在 Azure 上 - 发送客户端证书 - 请求被中止:无法创建 SSL/TLS 安全通道

[英]Implementing Swish payment C# - Only on Azure - Sending client certificate - The request was aborted: Could not create SSL/TLS secure channel

在写这个问题之前,我已经经历了很多问题和答案,但我似乎无法找到解决方案。 我想要做的是将应用程序托管为需要调用 Swish API 的 Azure 应用服务。

请参阅此线程以了解我的实现如何在本地运行,该线程工作正常:

带有 X509Certificate2 的 C# HttpClient - WebException:请求被中止:无法创建 SSL/TLS 安全通道

来自 Azure 的系统诊断日志:

https://pastebin.com/EBFb3zrA

我已经尝试了 Microsoft 论坛和 SO 中的解决方案,但似乎没有一个能解决问题:

https://social.msdn.microsoft.com/Forums/azure/en-US/ca6372be-3169-4fb5-870f-bfbea605faf6/azure-webapp-webjob-exception-could-not-create-ssltls-secure-channel?论坛=windowsazurewebsitespreview

//Tested both, none of them work
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
//ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11

由于很多问题都基于访问外部服务而不是发送客户端证书,因此复杂性也有所增加。

我所做的是在 Azure 的SSL certificates选项卡中导入测试证书。 由于.p12.pfx都是 PKCS #12 文件,因此我刚刚重命名了.p12文件。 该应用程序作为B1 Basic应用服务计划运行,因此大多数功能都应该存在。

https://stackoverflow.com/a/6821061/3850405

我还尝试过本指南将证书添加到 Azure -> 应用程序设置 -> 应用程序设置中的证书存储:

https://azure.microsoft.com/en-us/blog/using-certificates-in-azure-websites-applications/

当这不起作用时,我尝试将WEBSITE_LOAD_CERTIFICATES添加到我的应用程序中的appSettings ,但它导致了 HTTP 503。

Swish证书和英文指南:

https://www.getswish.se/content/uploads/2015/06/Guide-Testverktyg_20151210.zip

我们能够在 Azure Web 应用程序中完成这项工作。 诀窍是 appSetting WEBSITE_LOAD_CERTIFICATES并在 Azure 门户中上传所有 Swish 证书。 也就是说,来自 Swish 的.pfx文件包含三个证书,其中两个是根证书。 因此,我们导出根证书并在 TLS/SSL 设置 -> 公钥证书 (.cer) 下上传.cer文件,然后它开始工作。 您还需要将它们上传到所有部署槽,因为证书不会自动复制到槽中。

根据您的情况,我还通过将证书文件添加到资源文件并通过以下代码片段构建X509Certificate2实例来进行检查:

var certBytes=(byte[])ResourceManager.GetObject("Swish_Certificate");
var certificate = new X509Certificate2(certBytes, "swish");

根据我的测试,我假设您无法在 Azure Web App 上实现 Swish 支付。 此外,您可以在此处添加对 azure web 应用程序的反馈。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM