TLS版本及CipherSuites确认及设置

TLS版本及CipherSuites确认及设置查看:Computer Configuration→Administrative Templates→Network → SSL Configu

大家好,欢迎来到IT知识分享网。

在使用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:

TLS版本及CipherSuites确认及设置

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

TLS版本及CipherSuites确认及设置

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

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

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

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

TLS版本及CipherSuites确认及设置

查看测试结果:

TLS版本及CipherSuites确认及设置

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

2.使用openssl命令

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

TLS版本及CipherSuites确认及设置

TLS版本及CipherSuites确认及设置

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

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

设置TLS版本

作为客户端

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

TLS版本及CipherSuites确认及设置

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

作为服务器

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

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

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

TLS版本及CipherSuites确认及设置

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

TLS版本及CipherSuites确认及设置

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

TLS版本及CipherSuites确认及设置

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

TLS版本及CipherSuites确认及设置

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

TLS版本及CipherSuites确认及设置

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

TLS版本及CipherSuites确认及设置

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

TLS版本及CipherSuites确认及设置

TLS版本及CipherSuites确认及设置

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

如果EDI服务器是Linux系统

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

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

TLS版本及CipherSuites确认及设置

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

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

Windows服务器

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

TLS版本及CipherSuites确认及设置

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

TLS版本及CipherSuites确认及设置

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

TLS版本及CipherSuites确认及设置

在这里可以删除不安全的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

TLS版本及CipherSuites确认及设置

设置SSL Cipher Suite

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

TLS版本及CipherSuites确认及设置

Q&A分享

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

TLS版本及CipherSuites确认及设置

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

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/77421.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信