TLS版本及CipherSuites确认及设置

在使用Https(AS2、RosettaNet等协议)传输协议进行数据传输中,有时会遇到下面这些报错信息:

①276–Error during handshake:接收到的消息异常,或格式不正确。
②13003:Connot conclude ssl handshake.Cause:Connection reset.
③533 – An MDN was expected in the HTTP reply,but was not returned.
④32000 – Remote host disconnected during SSL negotiation.
⑤286:Unable to execute work queue.: Received fatal alert: HANDSHAKE_FAILURE

这些报错,有时是因为数据传输双方设置的TLS版本不一致导致,所以如果出现上述报错我们可在确认网络正常的情况下,排除是否是TLS的问题,一般交易伙伴双方确认下彼此使用的TLS版本和Cipher Suites,然后不支持的一方进行设置即可。同时,我们可以通过网络抓包来确认客户端和服务器支持的TLS版本和Cipher Suites,参考如下:

以下截图表示客户端告知服务器, 客户端支持的TLS版本和Cipher Suites:

edi

以下截图表示服务器端回复客户端,服务器支持的TLS版本和Cipher Suites:

edi

如果确认是TLS版本和Cipher Suites不支持的问题,我们该如何查看知行之桥支持的TLS版本及TLS Cipher Suites,并进行修改或者设置呢?

如何查看服务器支持的TLS版本

1.可以借助一些测试工具,比如SSL Server Test:https://www.ssllabs.com/ssltest/

输入需要测试的服务器的IP或者域名即可

edi

查看测试结果:

edi

如上图表示,该服务器支持TLS 1.0、TLS 1.1、TLS1.2。

2.使用openssl命令

openssl s_client -connect <IP或域名>:<端口>
edi
edi

以上结果表示,目前使用的是TLS1.2版本。

如果确认是因为TLS版本不一致导致数据传输失败时,可以参考以下步骤针对客户端和服务器设置TLS版本:

设置TLS版本

作为客户端

以AS2协议为例,在知行之桥中创建AS2端口,前往高级设置页面“启用TLS功能”,勾选对应的TLS版本即可:

edi

目前大多数客户使用的都是TLS1.2版本,有些客户已经升级到TLS1.3版本。

作为服务器

如果EDI服务器系统是Windows系统

需要修改服务器的注册表来实现

1.点击“开始”,选择“运行”,在对话框中输入“regedit”,进入注册表编辑器中:

edi

2.找到:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols选项,如下图:

edi

3.确认这里没有你需要的TLS版本,比如TLS1.2,右击-新建(New)->项(Key)->新建名为TLS 1.2的项(注意TLS与1.2之间有个空格),如下图:

edi

在新建的TLS 1.2项上右击->新建->项->新建Server, Client两个项,如下图:

edi

在新建的Server和Client中都新建DWORD 32位值,如下图:

edi

添加两个DWORD 32位值,名称分别为DisabledByDefault和 Enabled ,参考如下:

edi

其中DisabledByDefault的值为0,Enabled的值为1,参考如下:

edi
edi

注意,设置好后,需要重启服务器才可以生效。

如果EDI服务器是Linux系统

如果在Linux操作系统上部署的知行之桥,知行之桥是直接运行的其内置的Jetty Server(Jetty版本号:10.0.9)启动的,是默认支持到最新的TLS1.3的,可以通过以下命令确认使用的TLS版本:

openssl s_client -connect <IP或域名>:<端口> -debug | grep TLS

edi

如何查看服务器支持的TLS Cipher Suites并修改

在EDI通信中有时也会因为双方使用的TLS Cipher Suites不同,导致数据传输失败。或者一方进行了升级,改用了更安全的Cipher Suites,要求另一方同步升级。那么如何确认你的服务器支持哪些TLS Cipher Suites并进行修改呢?

Windows服务器

1.Win+R快捷键,调出运行窗口,输入gpedit.msc回车

edi

2.查看:Computer Configuration→Administrative Templates→Network → SSL Configuration Settings

edi

3. 双击右侧的SSL Cipher Suite Order,会弹出SSL Cipher Suite Order设置框,选择Enabled,在左下侧可以看到支持的SSL Cipher Suite,全选复制出来,可以看到详细的列表:

edi

在这里可以删除不安全的SSL Cipher Suite,添加安全的SSL Cipher Suite,进行应用。

Windows服务器可以在Microsoft官网查看操作系统支持的SSL Cipher Suite:https://learn.microsoft.com/en-us/windows/win32/secauthn/cipher-suites-in-schannel,如果是因为操作系统本来就不支持需要的SSL Cipher Suite,那就需要更换服务器或者重新安装系统了。

Linux服务器

查看知行之桥内置Jetty支持的SSL Cipher Suite命令

java -Dorg.eclipse.jetty.util.ssl.SslContextFactory.LEVEL=DEBUG -jar arc.jar

edi

设置SSL Cipher Suite

在arc.xml中添加以下设置即可:
edi

Q&A分享

Q:在运维工作中有些客户必须要使用https,但是有时在成功设置https后,浏览器无法访问https地址,报错如下:

edi

A:这种情况常常就是因为服务器不支持TLS1.2及以上版本,参考上述设置TLS版本的操作进行设置,设置后重启服务器后即可。

更多 EDI 信息,请参阅: EDI 是什么?

了解更多EDI信息,请您电话 182-9578-5852 或邮件 sales@kasoftware.cn 联系我们。点击下方蓝色按钮,即可免费试用EDI软件。

注:文案部分图片及内容来源于网络,版权归原创作者所有,如有侵犯到您的权益,请您联系我们进行删除,给您带来困扰,我们深感抱歉。

标签: ,
文章分类 帮助文档, 常见问题和回答, 操作指南, 知识库