.net - SSL故障在使用客户端证书 http web request时收到 SSL/TLS 异常

  显示原文与译文双语对照的内容
0 0

我有一个用IIS 7 它使用Windows 2008 Server .NET C#应用程序发送请求到PayPal处理付款。 几个月前我安装了由Verisign Certificate这套书。 安装之后,我能够运行WebClient代码创建SSL Connections成功,并处理支付通过Paypal NVP API ( Name值Pair ) 。

最近我一直收到错误期间SSL Transaction 。 特定的错误信息如下:

无法创建SSL/TLS安全通道

我查过一切我能想到上,阅读许多文章StackOverflow等地酝酿。

最好的资源,我发现了这个:

请求被中止: 无法创建SSL/TLS安全通道

本文中查找错误 http://support .microsoft .com/kb/915599 Resolution J 。 它还可能是你没有提供客户端证书。 很可能出现该问题所使用TLS或SSL3和服务器不理解它。

http://blogs .msdn .com/b/jpsanders/archive/2009/01/07/you接收一条或多条错误消息当你尝试进行http请求的应用程序中构建在net framework 2 0 aspx

这里列出了所有其他资源我试过读写implimenting他们的解决方案:

各种Links我Tried :

http://support .microsoft .com/kb/901183

Could不创建SSL/TLS安全通道可能是代理服务器的问题

The请求被中止:? 无法创建SSL/TLS安全通道

The请求被中止:? 无法创建SSL/TLS安全通道返回解密SEC_I_RENEGOTIATE

http://social .msdn .microsoft .com/forums/en US/netfxnetcom/thread/99d49286 5c3a 4311 a1e3 499f035ce979/

http://blogs .msdn .com/b/jpsanders/archive/2009/01/07/you接收一条或多条错误消息当你尝试进行http请求的应用程序中构建在net framework 2 0 aspx

http://forums .iis .net/t/1156690 aspx

我试过以下解决方案:

  1. 重新安装证书,并将其放置到各种存储( Personal,localcomputer )
  2. 添加此ServiceManager代码:

    ServicePointManager.Expect100Continue = true;
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
  3. 启用日志记录以获取更详细的细节

  4. 其他各种解决方案中列出上述链接

什么东西这么令人沮丧的是,这是工作好在几个月前,现在我接收到此错误。 起初我以为是证书过期,但看上去是很好

可能是的补丁包或Hotfix Windows Server已新建了一个设置或方案这会中断SSL 。 我想,重安装的证书可以解决。

一定要注意,当我重新安装,只需将其添加到了各种存储( Double Click cert并安装) 。 我没有创建" 证书Request " 。 因为该打印机已经安装和绑定到SSL Port我的IIS Application,应当确定。

这是创建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; 
    }

下面是一组屏幕快照显示的各个部件SSL Machine :

这是SSL Binding Settings IIS中: SSL Bindings

下面简要概述的安装Certs : certs1

这是Error收到: SSL Error

certs2

certs Installed : enter image description here

证书Details enter image description here

有何建议有关修复此错误,是最值得称道。 其中可能我想过但没有说明是:

  1. 能请求是耗时太多? 似乎足够快。。。 但是我读过这可能会引起问题。
  2. 在Internet Explorer,我看到Green " ssl Bar此网站会生成一个" 被证明是安全的。 这跟我说Cert是否安装正确,是真的?
  3. 我有一个简单的测试可以执行某种形式与HTTP请求有助于缩小问题的根源?
  4. 还有比这事跟PayPal? 有可能PayPal拒绝该请求,因为凭据在他们结束了没有?
  5. 会实现一个 ICertificatePolicy Interface 被任何有助于调试的问题? 我希望我能把它修好。

我也会觉得这个既SSL行不行得通,它没有bearing/dependency根本PayPal爱发脾气。 但我可能错了,

我觉得我也应该只使用name值Pair URL由WebClient的也是通过管道通过ie类,然后发送和接收响应。

非常感谢你花费的外观。

时间: 原作者:

0 0

我想你有一定几率的问题不是在你的客户端证书,但PayPal之一。

在你的问题:

在Internet Explorer,我看到Green " ssl Bar此网站会生成一个" 被证明是安全的。 这跟我说Cert是否安装正确,是真的?

不,这意味着PayPal的服务器证书的验证者所需的应用程序,我如果不包含。 " PayPal某人添加为你的证书进行签名的证书颁发机构。 但是,PayPal的证书未被添加到受信任的证书。

另外,我发现PayPal是否为当前的证书具有有效期为23 .3 .2011 。 也许在那之前你的应用程序完成了工作,现在进行过更改,则该应用程序已经停止工作。

基于此我建议尝试安装PayPal自身的证书作为服务器证书。

原作者:
0 0

另一个是答案可能是有帮助的:

与PayPal Issue Payments Pro?

总之,你应该试穿一下live PP服务器并查看其工作原理= = = = =

原作者:
...