noc*_*ier 13 .net security ssl certificate
我有一个带有IIS 7的Windows 2008 Server,它使用.NET C#应用程序向PayPal发送请求以处理付款.几个月前,我安装了Verisign购买的证书.安装后,我能够运行我的WebClient代码以成功创建SSL连接,并通过PayPal NVP API(名称值对)处理付款.
最近,我在SSL交易期间收到了一个错误.具体错误如下:
无法创建SSL/TLS安全通道
我已经检查了我能想到的一切,并在网上阅读了很多关于StackOverflow和其他地方的文章.
我找到的最好的资源是:
请求已中止:无法创建SSL/TLS安全通道
查找本文中的错误http://support.microsoft.com/kb/915599 解决方案J.也可能是您没有提供客户端证书.很可能这是使用TLS或SSL3并且服务器不理解它的问题.
这里列出了我尝试阅读并提出解决方案的所有其他资源:
我试过的各种链接:
http://support.microsoft.com/kb/901183
无法创建SSL/TLS安全通道 - 问题可能是代理服务器吗?
请求已中止:无法创建SSL/TLS安全通道 - Decrypt已返回SEC_I_RENEGOTIATE
http://forums.iis.net/t/1156690.aspx
我尝试了以下解决方案:
添加了此ServiceManager代码:
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
Run Code Online (Sandbox Code Playgroud)启用日志记录以获取更详细的详细信息
令人沮丧的是,这几个月前工作正常,现在我收到了这个错误.起初,我认为证书已过期,但似乎没问题.
它可能是Windows Server的Service Pack或Hotfix创建了一个破坏SSL的新设置或方案.我认为重新安装证书可以解决这个问题.
重要的是要注意,当我重新安装时,我只是将它添加到各个商店(双击证书并安装).我没有创建"证书申请".由于它已经安装并绑定到我的IIS应用程序的SSL端口,它应该没问题.
这是创建Web请求的代码:
public static Hashtable DoWebReq(string strNVP, string strNVPSandboxServer)
{
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
string _strNVP = strNVP;
//Create web request and web response objects, make sure you using the correct server (sandbox/live)
var wrWebRequest = (HttpWebRequest)WebRequest.Create(strNVPSandboxServer);
wrWebRequest.Method = "POST"; // POST
var requestWriter = new StreamWriter(wrWebRequest.GetRequestStream());
requestWriter.Write(_strNVP);
requestWriter.Close();
// Get the response.
var hwrWebResponse = (HttpWebResponse)wrWebRequest.GetResponse();
var responseReader = new StreamReader(wrWebRequest.GetResponse().GetResponseStream());
//and read the response
string responseData = responseReader.ReadToEnd();
responseReader.Close();
string result = System.Web.HttpContext.Current.Server.UrlDecode(responseData);
string[] arrResult = result.Split('&');
Hashtable htResponse = new Hashtable();
string[] responseItemArray;
foreach (string responseItem in arrResult)
{
responseItemArray = responseItem.Split('=');
htResponse.Add(responseItemArray[0], responseItemArray[1]);
}
return htResponse;
}
Run Code Online (Sandbox Code Playgroud)
以下是一系列屏幕截图,用于显示SSL机器的各个组件:
这是IIS中的SSL绑定设置:

以下是已安装的Certs的概述:

这是我收到的错误:


Certs已安装:

证书细节

任何有关修复此错误的建议都将非常受欢迎.我考虑但未解决的一些可能性是:
我认为无论SSL是否有效,它对PayPal都没有任何影响/依赖......但我可能是错的.
我觉得我应该只能使用由WebClient类构建的名称值对URL,并通过IE通过管道发送它并接收响应.
小智 3
我认为问题可能不在于您的客户证书,而在于 PayPal 的证书。
关于你的问题:
在 Internet Explorer 中,我确实看到绿色的“SSL 栏”,表明该网站已被验证为安全的。这表明证书已正确安装,这是真的吗?
不,这意味着PayPal的服务器证书是由您的浏览器验证的,即PayPal的证书是由您添加的证书颁发机构签名的。但是,PayPal 的证书不会添加到您的可信证书中。
我还注意到,PayPal 当前的证书自 2011 年 3 月 23 日起生效。也许在那之前您的应用程序一直在工作,而现在它已更改,应用程序已停止工作。
基于此我建议尝试安装 PayPal 自己的证书作为服务器证书。
| 归档时间: |
|
| 查看次数: |
8580 次 |
| 最近记录: |