Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java客户端与仅SSLv3服务器通信时的SSL握手问题_Ssl_Jsse - Fatal编程技术网

java客户端与仅SSLv3服务器通信时的SSL握手问题

java客户端与仅SSLv3服务器通信时的SSL握手问题,ssl,jsse,Ssl,Jsse,我们正面临一个问题,我相信这是正确的地方。我们有一个负载平衡器(cisco),由于各种原因,负载平衡器(服务器)端的SSL配置被设置为使用“SSLv3”协议版本。现在,在设置相同的设置之后,当我在CHROME浏览器中访问负载平衡器时,我可以访问这些页面,但当我单击它们的安全图标时,我确实看到了下面的消息 “必须使用ssl 3.0重试连接”-我使用wireshark查看了数据包捕获,我看到浏览器尝试TLSv1并从服务器接收到“致命警报”,说“protocol_version”,然后浏览器立即尝试S

我们正面临一个问题,我相信这是正确的地方。我们有一个负载平衡器(cisco),由于各种原因,负载平衡器(服务器)端的SSL配置被设置为使用“SSLv3”协议版本。现在,在设置相同的设置之后,当我在CHROME浏览器中访问负载平衡器时,我可以访问这些页面,但当我单击它们的安全图标时,我确实看到了下面的消息

“必须使用ssl 3.0重试连接”-我使用wireshark查看了数据包捕获,我看到浏览器尝试TLSv1并从服务器接收到“致命警报”,说“protocol_version”,然后浏览器立即尝试SSLv3 version并完成握手。所以浏览器可以作为一个客户端来协商这个问题

然而,当我从eclipse设置一个独立的java(尝试使用1.6和1.7)客户端并尝试连接到服务器时,我得到了以下异常

:收到致命警报:协议\版本javax.net.ssl.ssLexException:收到致命警报:协议\版本

根据各种文件,我看到了两种选择

  • 将https.protocol系统属性设置为SSLv3。[这对我们来说是可行的,但问题是它会影响全局出站SSL调用。我有另一个到另一台服务器的出站SSL调用,该服务器不适用于SSLv3]

  • setEnabledprotocols()-这也可以,但有时我们无法直接访问套接字(有时我们使用第三方生成存根,而存根负责低级连接,因此无法访问该套接字)

  • 但我的实际问题是,如果默认情况下在java中启用了TLSv1/SSLv3和SSLv2Hello(我认为是这种格式),为什么JSSE实现不能像chrome浏览器那样进行协商。这是预期的吗?如果浏览器正在这样做,我相信它应该是一些SSL RFC的一部分,如果是这样的话,这个“协商”的相同功能应该由java本身提供,对吗

    我确实经历了这一过程,在握手时找不到谈判的任何部分

    服务器端(负载平衡器)是否有可能出现问题。我看到服务器发送致命警报,但作为cisco,我相信ssl实现应该是完美的,这是意料之中的。我错了吗


    这个问题在Java1.6和1.7中都会发生。如果需要更多信息来回答,请务必告诉我,我很乐意提供帮助。

    您的确定性是错误的。这不是一个编程问题,而是一个硬件/软件配置问题。嘿,凯文-这可能不是一个真正的“编程”问题,但它是关于为什么java不处理这个问题,这很奇怪。我在谷歌上搜索了不少,但没有找到正确的答案。这个影响相当大。在我的例子中,我们有一个通过PCI认证的支付网关,出于各种原因,我们不得不限制我们的服务器使用SSLv3。现在我有很多客户端连接到该服务器,每个人都开始面临“protcolu版本”问题,这让我感到困惑。现在n/w的人把我指给浏览器,说它可以协商,为什么java客户端不能?硬件设置为SSLv3的“特定原因”是什么?这已经过时很多年了。您的问题最好向Java开发人员提出。您在这里得到的唯一答案将是“因为这是它的设计方式”,或者或多或少是不知情的猜测和意见。“某些原因”-我们的支付网关需要PCI认证(支付卡行业数据安全标准),并且要求您必须使用最新的SSL/TLS。我们无法使用TLS1.2,因此必须使用SSLv3。但实际的qs又是不同的。当你说最好是面向java开发人员的时候,我已经在oracle论坛上发布了。你能推荐其他地方吗?“TLS v1.2之前的最新TLS/SSL”不是SSLv3,而是TLS v1.1和TLS v1.0之前的TLS。SSLv3实际上是最早的一款,您可以在不产生重大不安全感的情况下使用它。你的问题似乎是基于误解。为了纠正另一个误解,Oracle论坛上没有java开发人员,可能有两个例外,否则只有志愿者。无论如何,这个问题对于解决你当前的问题来说是毫无意义的。如果您有要求,请提交RFE。