Linux服务器发生SSL握手失败,但Windows发生SSL握手失败

时间:2018-08-13 23:43:13

标签: java linux ssl diffie-hellman

我找到了一些related questions,但是我的却有些不同。

在Windows上运行的客户端应用程序,使用Java 1.7(71)和bouncycastle连接到在Linux RH或Windows 10上运行Java 1.8(161)的tomcat 8.5.xx服务器。Linux和Windows服务器的安装应相同(其他而不是Linux和Windows)。我们对软件进行双方控制。

连接到Windows时,客户端应用程序可以正常工作。连接到Linux时,SSL握手失败:

data = {'sepal_length': {'sepal_length': 1.0, 'sepal_width': 0.44531537502467533, 'petal_length': 0.935877078652436, 'petal_width': 0.9089768166845817}, 'sepal_width': {'sepal_length': 0.44531537502467533, 'sepal_width': 1.0, 'petal_length': 0.2897419517994226, 'petal_width': 0.32172795519309727}, 'petal_length': {'sepal_length': 0.935877078652436, 'sepal_width': 0.2897419517994226, 'petal_length': 1.0, 'petal_width': 0.9813785485254833}, 'petal_width': {'sepal_length': 0.9089768166845817, 'sepal_width': 0.32172795519309727, 'petal_length': 0.9813785485254833, 'petal_width': 1.0}}

df_sqr = pd.DataFrame(data)
#               petal_length  petal_width  sepal_length  sepal_width
# petal_length      1.000000     0.981379      0.935877     0.289742
# petal_width       0.981379     1.000000      0.908977     0.321728
# sepal_length      0.935877     0.908977      1.000000     0.445315
# sepal_width       0.289742     0.321728      0.445315     1.000000
Se_vertical = df_sqr.unstack()
# petal_length  petal_length    1.000000
#               petal_width     0.981379
#               sepal_length    0.935877
#               sepal_width     0.289742
# petal_width   petal_length    0.981379
#               petal_width     1.000000
#               sepal_length    0.908977
#               sepal_width     0.321728
# sepal_length  petal_length    0.935877
#               petal_width     0.908977
#               sepal_length    1.000000
#               sepal_width     0.445315
# sepal_width   petal_length    0.289742
#               petal_width     0.321728
#               sepal_length    0.445315
#               sepal_width     1.000000
# dtype: float64

# df_sqr_revert = Se_vertical.stack()
# AttributeError: 'Series' object has no attribute 'stack'

这并不完全令人惊讶,因为Java 7无法处理大型DH密钥。但 当客户端连接到Windows服务器(相同版本的tomcat,相同版本的Java)时,SSL握手可以正常工作,并且连接成功。

正确设置javax.net.debug显示,是的,Linux服务器正在发送2048位DH密钥,而Windows正在发送1024。我不知道为什么。

Windows和Linux服务器的java.security文件是相同的(Windows具有sun.security.mscapi.SunMSCAPI提供程序除外)。 crypto.policy = unlimited都被注释掉了。

两部分问题:

  1. 我还能在哪里找到两个系统为何行为不同的原因?这是OS加密库的区别吗?
  2. 有没有一种方法可以解决此问题而无需更改客户端代码(它是旧版代码,我们宁愿不进行修补)?

0 个答案:

没有答案