我正在开发一个 ASP.Net WebForms 应用程序。我们正在使用PayFort 的启动 API用于支付流程。该应用程序在我们的本地机器(Windows 10)上运行良好,但当我们尝试在部署服务器(Windows Server Web 2008)上使用他们的 API 进行支付时,它显示以下错误。
客户端和服务器无法通信,因为它们没有共同的算法。
其网页上的文档(PayFort Start 和 SSL/TLS) 表示他们使用 Tls1.2 进行通信。他们的 API 已经包含使用 Tls1.2 作为安全协议的代码
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
我们在 .Net Framework 4.5 上构建了应用程序,因为Tls1.2
只有 .Net 4.5 或更高版本支持。不用说,我们的服务器安装了 .Net Framework 4.5。
我们还在 Windows 注册表中添加了 Tls1.1 和 Tls1.2 的注册表值
使用SSL 实验室工具,我们还确认两台服务器(我们的服务器和 PayFort 的 API 服务器)都支持至少两种密码套件(https://api.start.payfort.com)
PayFort API 服务器支持的密码套件
(绿色轮廓是与我们的服务器通用的)
我们的服务器支持的密码套件
我也用过Nartac IIS 加密软件显示以下信息Best Practices
我不确定这是否与问题有关,但以下是我们服务器上安装的 SSL 证书的详细信息
有人能指出我们做错了什么以及我们应该怎么做才能与所需的服务器进行通信并从部署在我们服务器上的应用程序付款,因为我们在本地机器上做得很好。
答案1
您使用的是 Windows 2008 非 R2 吗?Windows 2008 不支持 TLS 1.2。如果您需要 TLS 1.2 支持,则必须升级到 Windows 2008 R2 或更高版本
您可以在此处查看不同版本 Windows 对 TLS 的支持: http://blogs.msdn.com/b/kaushal/archive/2011/10/02/support-for-ssl-tls-protocols-on-windows.aspx