TLS版本及CipherSuites确认及设置
发布网友
发布时间:2024-10-01 23:01
我来回答
共1个回答
热心网友
时间:2024-10-17 18:02
在使用Https(AS2、RosettaNet等协议)进行数据传输时,可能会遇到一系列报错,如“接收到的消息异常”、“无法完成SSL握手”、“预期MDN未返回”等。这些报错往往是因为数据传输双方设置的TLS版本不一致所导致。因此,若遇到上述报错,我们首先应确认网络是否正常,然后检查是否是TLS版本问题。此时,交易伙伴双方需确认彼此使用的TLS版本和Cipher Suites,不支持的一方进行相应设置。同时,我们可以通过网络抓包确认客户端和服务器支持的TLS版本和Cipher Suites。
以下截图展示了客户端告知服务器支持的TLS版本和Cipher Suites,以及服务器端回复客户端支持的TLS版本和Cipher Suites。
若确认是TLS版本和Cipher Suites不支持的问题,我们可以通过以下方法查看知行之桥支持的TLS版本和Cipher Suites,并进行修改或设置:
1. 使用SSL Server Test工具:ssllabs.com/ssltest/,输入需要测试的服务器IP或域名,查看测试结果。
2. 使用openssl命令:openssl s_client -connect ,结果表示目前使用的是TLS1.2版本。
若确认是TLS版本不一致导致数据传输失败,可以按照以下步骤设置客户端和服务器TLS版本:
作为客户端,在知行之桥中创建AS2端口,前往高级设置页面“启用TLS功能”,勾选对应的TLS版本即可。
作为服务器,若使用Windows系统,需修改注册表来实现。具体操作步骤如下:
1. 点击“开始”,选择“运行”,在对话框中输入“regedit”,进入注册表编辑器。
2. 找到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols选项。
3. 确认这里没有你需要的TLS版本,如TLS1.2,右击-新建(New)->项(Key)->新建名为TLS 1.2的项。
4. 在新建的TLS 1.2项上右击->新建->项->新建Server, Client两个项。
5. 在新建的Server和Client中都新建DWORD 32位值,名称分别为DisabledByDefault和Enabled。
6. 设置好DisabledByDefault的值为0,Enabled的值为1,然后重启服务器使设置生效。
若EDI服务器是Linux系统,知行之桥是直接运行的其内置的Jetty Server(Jetty版本号:10.0.9)启动的,是默认支持到最新的TLS1.3的。可以通过以下命令确认使用的TLS版本:
openssl s_client -connect : -debug | grep TLS
若确认是Cipher Suites不同导致数据传输失败,可以按照以下方法查看服务器支持的Cipher Suites并进行修改:
1. 使用Windows系统,通过Win+R快捷键调出运行窗口,输入gpedit.msc回车。
2. 查看:Computer Configuration→Administrative Templates→Network→SSL Configuration Settings。
3. 双击右侧的SSL Cipher Suite Order,选择Enabled,查看支持的SSL Cipher Suite。
4. 在这里可以删除不安全的SSL Cipher Suite,添加安全的SSL Cipher Suite,进行应用。
若Linux服务器,查看知行之桥内置Jetty支持的SSL Cipher Suite命令为:java -Dorg.eclipse.jetty.util.ssl.SslContextFactory.LEVEL=DEBUG -jar arc.jar。