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

时间:2017-05-29 13:00:16

标签: c# azure ssl https

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

请参阅此主题,了解我的实现如何在本地运行,并且工作正常:

C# HttpClient with X509Certificate2 - WebException: The request was aborted: Could not create SSL/TLS secure channel

Azure的系统诊断日志:

https://pastebin.com/EBFb3zrA

我已经尝试过Microsoft论坛的解决方案,但似乎没有办法解决这个问题:

https://social.msdn.microsoft.com/Forums/azure/en-US/ca6372be-3169-4fb5-870f-bfbea605faf6/azure-webapp-webjob-exception-could-not-create-ssltls-secure-channel?forum=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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

根据您的方案,我还检查了将cert文件添加到资源文件并通过以下代码片段构建X509Certificate2实例:

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

根据我的测试,我认为您无法在Azure Web App上实施Swish付款。此外,您可以为azure Web应用here添加反馈。