我找到了一些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都被注释掉了。
两部分问题: