调用SSL支付网关时出错:"底层连接已关闭:无法为SSL / TLS安全通道建立信任关系"

时间:2015-06-05 16:57:10

标签: c# asp.net iis ssl braintree

迈出实施支付网关的第一步。

在win 8.1下,在IIS 8.5中托管的ASP.net代码中调用Braintree和Beantream支付网关,结果如下:

  

"底层连接已关闭:无法建立信任   SSL / TLS安全通道的关系"

请注意,从位于同一个框中的中间层调用相同的服务可以正常工作,因此证书安装正确。

以下是通过SDK调用Braintree服务的示例代码:

[System.Web.Services.WebMethod]
        public static CheckinDetailResponse GetViewData()
        {
            CheckinDetailResponse response = new CheckinDetailResponse()
            {
                ClientToken = string.Empty,
                IsSuccessful = false,
                ErrorMessage = string.Empty
            };

            try
            {

                response.ClientToken = GetPaymentToken(); 
                response.IsSuccessful = true;
            }
            catch (BaseDataServicesException ex)
            {
                response.ErrorMessage = ex.GetLocalizedMessage(Resources.WebCommon.ResourceManager);
            }

            return response;

        }


    private static string GetPaymentToken()
            {
                var gateway = new BraintreeGateway
                {
                    Environment = Braintree.Environment.SANDBOX,
                    MerchantId = "999",
                    PublicKey = "999",
                    PrivateKey = "999"
                };


                 var clientToken = gateway.ClientToken.generate(null);
                return JsonDcSerialization.ToJsonString(clientToken); ;
            }

是否需要在IIS中进行一些特殊设置才能从Web应用程序调用SSL服务?

谢谢!

2 个答案:

答案 0 :(得分:0)

检查计算机上是否安装了SSL证书,是否确实在代码上传递了SSL证书,以及您使用的计算机是否配置为接受证书颁发者为可信任。

答案 1 :(得分:0)

如果这是从第三方证书颁发机构颁发的证书,您可能需要将签名者证书(也称为中间证书)与公钥一起传递(最终以pkcs#7格式)。如果您使用的是自签名证书,则可能需要将根导入mmc受信任的根证书颁发机构存储区。

我倾向于认为这是第一种情况,因为不信任的错误消息通常被称为缺乏信任链中的一块。

希望得到这个帮助。