当前位置: 首页 > 知识库问答 >
问题:

TLS连接握手失败

澹台宾白
2023-03-14

我们很难与远程机器(如PayPal vb)建立https连接谁从我们的系统中禁用了SSL3协议。Net应用程序。HttpWebRequest实例的GetResponse方法出现以下异常。

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

当我们使用WireShark深入并跟踪网络日志时,我们看到远程机器返回以下错误

TLSv1。2警报(级别:致命,描述:握手失败)握手失败40

更有趣的情况是,当我尝试将PayPal地址输入到internet浏览器时,它可以成功打开页面,这意味着可以建立连接,我们还尝试使用OpenSSL命令工具连接,结果再次成功连接。

当我们比较InternetExplorer和. net应用程序的WireShark日志时,我们可以看到Internet Explorer正在发送比. net应用程序更多的可用密码套件,并且PayPal正在选择以下不在. Net应用程序请求中的密码。

TLS_RSA_与_RC4_128_SHA

以下是从WireShark捕获的日志:

我们认为PayPal不喜欢我们的密码套件,我们从发送"客户你好"请求。网络应用程序。

更有趣的是,这个问题只发生在我们运行Windows 2008 R2的生产机器上,everythins正在使用Windows Server 2008 R2和Windows 8 PC开发环境。

请给我们一些解决这个问题的想法。

下面是我们的C#代码连接PayPalapi。

HttpWebRequest wr = (HttpWebRequest)WebRequest.Create("https://api-3t.sandbox.paypal.com/2.0/");

wr.Method = "POST";
wr.ContentType = "application/x-www-form-urlencoded";


string output = null;
try
{
    WebResponse wres = wr.GetResponse();
    Stream ress = wres.GetResponseStream();
    StreamReader ressr = new StreamReader(ress, Encoding.UTF8);
    output = ressr.ReadToEnd();
}
catch (System.Net.WebException webEx)
{
    if (webEx.Response != null)
    {
        WebResponse wres = webEx.Response;
        Stream ress = wres.GetResponseStream();
        StreamReader ressr = new StreamReader(ress);
        output = ressr.ReadToEnd();
    }
    else
        throw webEx;

}
catch (Exception ex)
{
    throw ex;
}

最好的问候

共有1个答案

黄涵畅
2023-03-14

我们认为PayPal不喜欢我们的密码套件,我们从发送"客户你好"请求。网络应用程序

这是正确的。如果你看一下SSLLAB,你会看到api-3t。沙箱。贝宝。com仅支持密码集中不包含的RC4-SHA(TLS_RSA_和_RC4_128_SHA)。

更有趣的情况是,这个问题只发生在我们运行Windows 2008 R2的生产机器上

可能是您对生产系统进行了一些加固,并禁用了RC4-SHA,因为该密码被认为是不安全的。请参阅Microsoft Technet,了解您可能已经实现的匹配建议。

 类似资料:
  • 我使用vert. x java客户端连接安慰服务器。当使用SSL证书进行连接时,收到以下SSL握手错误。我在代码中使用setTrust all(true)。有人能帮助解释错误的原因和解决方案吗? 以下是错误:SEVERE:未处理的异常java.lang.IllegalStateExctive:桥没有成功启动io.vertx.amqpbridge.impl.AmqpBridgeImpl.create

  • 我需要与外部服务连接,而且我的客户端身份验证有问题。该服务需要证书、用户名和密码以及请求。 我正在使用Windows Server 2008 R2。 我已经收到带有证书的PKCS#7包并导入: 本地计算机/个人的SSL证书(仅含公钥) 中间CA和根CA到本地计算机/受信任的RootCertificationAuthorities 我已经在Windows注册表中启用了TLS 1.0、1.1、1.2客

  • 在JDK 11下使用TLS 1.3原则上是可行的。然而,一旦在两个并发线程中建立连接,两个线程的初始握手都会失败。 这显然是一个已知的问题,应该已经解决了: Oracle JDK 11.0.2 OpenJDK 11.0.3 使用OpenJDK,这应该是固定的: 或者甚至是OpenJDK(这是今天在AdoptOpenJDK. net上可用的最新选项): 这是正式修复的,但我似乎无法让它工作。 这是怎

  • 在这个基于Xcode7(beta)构建的应用程序中,TCP套接字连接(NSStream)失败,错误如下。 在info.plist中,我还包括了以下相关异常的ATS。 但在下面的委托中 -(void)stream:(NSStream*)stream HandleEvent:(NSStreamEvent)eventCode 我得到的事件代码为8,表示错误发生。具有上述描述。 验证错误:num=19:证

  • 我不知道我到底需要在哪里包含客户机证书。现在,我的第一个问题是我不信任服务器。我尝试使用默认的Java密钥库文件(cacerts),其中包含Thawte和Digicert,这些是我试图与之通信的服务器的根权限。我使用

  • 我正在go中运行https web服务器。我正在使用angular web应用程序(Chrome浏览器)对其进行测试,该应用程序可以对web服务器进行ajax调用。 如果我不断地点击网络服务器,一切似乎都正常。但每当我让它闲置一段时间并点击web服务器时,来自浏览器的ajax调用都不会得到响应。我几乎总是在服务器日志中看到此日志行。 我可以确认IP地址是我的IP地址。 我像这样启动我的https服