Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅在Azure上实现Swish支付C#-发送客户端证书-请求被中止:无法创建SSL/TLS安全通道_C#_Azure_Ssl_Https - Fatal编程技术网

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

仅在Azure上实现Swish支付C#-发送客户端证书-请求被中止:无法创建SSL/TLS安全通道,c#,azure,ssl,https,C#,Azure,Ssl,Https,在写这个问题之前,我已经问了很多问题和答案,但我似乎找不到解决办法。我试图做的是将一个应用程序作为需要调用SwishAPI的Azure应用程序服务托管 请参阅此线程,了解我的实现如何在本地运行,运行良好: Azure中的系统诊断日志: 我曾尝试过Microsoft论坛上的解决方案,但似乎没有一个解决方案: 由于许多问题都是基于访问外部服务而不是发送客户端证书,所以复杂性也会有所增加 我所做的是在Azure上的SSL证书选项卡中导入测试证书。由于.p12和.pfx都是PKCS#12文件,我刚

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

请参阅此线程,了解我的实现如何在本地运行,运行良好:

Azure中的系统诊断日志:

我曾尝试过Microsoft论坛上的解决方案,但似乎没有一个解决方案:

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

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

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

当这不起作用时,我试图在我的应用程序中将
WEBSITE\u LOAD\u证书
添加到
appSettings
,但结果是HTTP 503

Swish证书和英语指南:


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

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

根据我的测试,我假设您无法在Azure Web App上实现Swish支付。此外,您还可以为azure web app添加反馈。

我们能够在azure web app中实现这一点。诀窍是应用程序设置
网站\加载\证书
,并在Azure门户中上载所有Swish证书。也就是说,Swish的
.pfx
文件包含三个证书,其中两个是根证书。因此,我们导出了根证书,并在TLS/SSL设置->公钥证书(.cer)下上载了
.cer
文件,然后开始工作。您还需要将它们上载到所有部署插槽,因为证书不会自动复制到插槽。

正如我所知,您上载到web应用的证书将只安装到个人证书存储。当我遵循您的swish证书指南时,我发现它会存储到受信任的根证书颁发机构中,我认为这可能是原因。@Bruce MSFT是的,我认为这也是问题所在。现在将其作为
虚拟机运行
,它就可以正常工作了。如果可以作为
应用程序服务
来做,那就太好了。你成功地让它工作了吗?我在这里找同样的东西。@JeppePepp不,它不会起作用的。我直接向Microsoft询问是否信任他们的证书,但请求被拒绝。我们通过将其作为虚拟机托管并将其证书添加到受信任的根证书颁发机构来解决这个问题。好的,谢谢你的回答。我知道这个问题已经很老了,所以我交叉着手指,你有一些好消息要分享。我现在将继续使用klarna:)您是否必须在代码中添加其他内容才能使用根证书?当我创建HttpClient时,我添加了使用certStore.Certificates.find(X509FindType.FindByThumbprint,thumbprint,false)找到的客户端证书,但这似乎只添加了客户端证书本身,而没有添加根证书。您是否也将它们添加到
HttpClientHandler.ClientCertificates
中?是的,没错,我们将它们添加到
HttpClientHandler.ClientCertificates
。这里的答案绝对正确。然而,如果有人想要一个更全面的指南如何让这项工作,我已经在我的博客上写了一个:
var certBytes=(byte[])ResourceManager.GetObject("Swish_Certificate");
var certificate = new X509Certificate2(certBytes, "swish");