客户端和服务器无法通信,因为它们没有 Windows Server 2008 Web 上的通用算法 [英] The client and server cannot communicate, because they do not possess a common algorithm on Windows Server 2008 Web

查看:117
本文介绍了客户端和服务器无法通信,因为它们没有 Windows Server 2008 Web 上的通用算法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个 ASP.Net WebForms 应用程序.我们正在使用 (绿色勾勒的是我们服务器常见的那些)

我们的服务器支持的密码套件

我还使用了

我不确定它是否与问题有关,但这里是我们服务器中安装的 SSL 证书的详细信息


任何人都可以指出我们做错了什么,我们应该怎么做才能与所需的服务器通信并从部署在我们服务器上的应用程序付款,因为我们在本地机器上做得很好.

解决方案

问题出在操作系统上.我们使用的是 Windows Server 2008,我们没有意识到应用程序需要操作系统的协议才能与其他服务器通信.由于我们安装了 .NET Framework 4.5 并且我们还使用代码 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; 强制应用程序使用 Tls1.2(根据要求),因此相信一切都应该正常工作,但显然这不会发生.
tl;dr; 我们在机器上安装了 Windows Server 2012 并且应用程序现在运行良好(应该如此)

I am working on a ASP.Net WebForms application. We are using PayFort's Start API for the payment process. The application is running fine on our local machine (Windows 10) but it shows following error when we try to make payment using their API on our deployment server (Windows Server Web 2008).

The client and server cannot communicate, because they do not possess a common algorithm.

The documentation on their webpage (PayFort Start and SSL/TLS) states that they use Tls1.2 for the communication. Their API already contains the code to use Tls1.2 as Security Protocol

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

We've built the application on .Net framework 4.5 since Tls1.2 only supported by .Net 4.5 or later. Needless to mention, our server has .Net Framework 4.5 installed in it.

We've also added the registry values for Tls1.1 and Tls1.2 in the windows registry

Using the SSL Labs tool, we've also confirmed that there are atleast two Cipher suites supported by both servers (our server and PayFort's API Server) (https://api.start.payfort.com)

Cipher suites supported by PayFort's API Server (Green outlined are those which are common with our server)

Cipher Suites supported by our server

I've also used the Nartac IIS crypto software and it's showing the following info as Best Practices

I'm not sure if it has anything to do with the problem or not, but here are the details of the SSL certificate installed in our server


Can anyone please point out that what we are doing wrong and what should we do in order to communicate with the desired server and make payment from the application deployed on our server as we are doing perfectly on our local machine.

解决方案

The problem was the Operating system. We were using Windows Server 2008 and we didn't realize the application need OS's protocol to communicate with other server. Since we have .NET Framework 4.5 installed and we were also using the code ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; to force application to use Tls1.2 (according to the requirement), hence believed that everything should work fine, but obviously this wasn't going to happen.
tl;dr; We installed Windows Server 2012 on the machine and the application is running fine now (as it should)

这篇关于客户端和服务器无法通信,因为它们没有 Windows Server 2008 Web 上的通用算法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆