Ssl 贝宝快捷结账连接。客户端和服务器无法通信,因为它们没有通用的算法
我正在将PayPal结算集成到我们当前的电子商务网站。在我的本地计算机上,一切正常,但在临时环境中,连接抛出以下错误: System.Net.WebException:基础连接已关闭:接收时发生意外错误。-->System.ComponentModel.Win32Exception:客户端和服务器无法通信,因为它们没有通用算法 正如PayPal文档所述,我们支持SHA-256,并在服务器上安装了G5根证书() 该服务器在Windows server 2008 R2上运行,支持的密码为Triple DES 168、AES 128/128和AES 256/256。 如果Tls12未硬编码(见下文),则会引发另一个错误:“无法创建SSL/TLS安全通道” 如果有人能在这方面提供帮助,我将不胜感激。 谢谢Ssl 贝宝快捷结账连接。客户端和服务器无法通信,因为它们没有通用的算法,ssl,encryption,paypal,paypal-sandbox,tls1.2,Ssl,Encryption,Paypal,Paypal Sandbox,Tls1.2,我正在将PayPal结算集成到我们当前的电子商务网站。在我的本地计算机上,一切正常,但在临时环境中,连接抛出以下错误: System.Net.WebException:基础连接已关闭:接收时发生意外错误。-->System.ComponentModel.Win32Exception:客户端和服务器无法通信,因为它们没有通用算法 正如PayPal文档所述,我们支持SHA-256,并在服务器上安装了G5根证书() 该服务器在Windows server 2008 R2上运行,支持的密码为Triple
最后我们弄清楚了发生了什么。 在Windows 2008R2中,客户端连接的注册表中默认禁用TLS 1.1和1.2。因此,虽然服务器本身可以接受传入请求的两个协议,但必须通过注册表启用传出客户端连接 必须在协议->TLS 1.1(和TLS 1.2)->DisabledByDefault下进行更改 因此,需要更改这些值,重新启动,TLS1.1和TLS1.2应该可以工作
public string SendRequest(string url, string postData) {
var uri = new Uri(url);
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var request = WebRequest.Create(uri);
var encoding = new UTF8Encoding();
var requestData = encoding.GetBytes(postData);
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "POST";
request.Timeout = (300*1000); //TODO: Move timeout to config
request.ContentLength = requestData.Length;
using (var stream = request.GetRequestStream()) {
stream.Write(requestData, 0, requestData.Length);
}
var response = request.GetResponse();
string result;
using (var reader = new StreamReader(response.GetResponseStream(), Encoding.ASCII)) {
result = reader.ReadToEnd();
}
return result;
}