在写这个问题之前,我已经经历了很多问题和答案,但我似乎无法找到解决方案。我要做的是将应用程序作为Azure应用服务托管,需要调用Swish API。
请参阅此主题,了解我的实现如何在本地运行,并且工作正常:
Azure的系统诊断日志:
我已经尝试过Microsoft论坛的解决方案,但似乎没有办法解决这个问题:
//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
答案 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添加反馈。