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

问题描述:

在写这个问题之前,我已经经历了很多问题和答案,但我似乎无法找到解决方案。我想要做的是将应用程序作为需要调用Swish API的Azure应用程序服务来托管。实施Swish支付C# - 仅在Azure上 - 发送客户端证书 - 请求被中止:无法创建SSL/TLS安全通道

请参阅此线程如何我执行本地它运行正常工作:

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

系统诊断日志从Azure中:

https://pastebin.com/EBFb3zrA

我试图从微软论坛中的解决方案和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?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://*.com/a/6821061/3850405

我自己也尝试这个指南将证书添加到Azure的证书存储 - >应用程序设置 - >应用程序设置:

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

当这个没有工作,我试过在我的应用程序中添加WEBSITE_LOAD_CERTIFICATESappSettings,但它导致HTTP 503.

Swish证书和英文指南:

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

+1

据我所知,您上传到您的网络应用程序的证书将只安装到个人证书商店。当我遵循你的swish证书指南时,我发现它将被存储到'受信任的根证书颁发机构'中,我认为它可能是原因。 –

+0

@ Bruce-MSFT是的,我认为这也是问题所在。现在将其作为“虚拟机”运行,并且工作正常。如果可以将其作为“应用程序服务”来完成,那将会很好。 – Ogglas

根据您的情况,我也通过添加证书文件到一个资源文件检查,并通过下面的代码片段构建X509Certificate2实例:

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

按我的测试,我认为您无法在Azure Web App上实施Swish付款。此外,您可以添加您的反馈天蓝色的网络应用here