侧边栏壁纸
博主头像
里奥的博客博主等级

行动起来,活在当下

  • 累计撰写 18 篇文章
  • 累计创建 6 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

TLS版本及CipherSuites确认及设置

里奥
2024-06-12 / 0 评论 / 0 点赞 / 52 阅读 / 5438 字

问题

当我们调用api时,我们有时会遇到下面这些报错信息:

  1. 276–Error during handshake:接收到的消息异常,或格式不正确。

  2. 13003:Connot conclude ssl handshake.Cause:Connection reset.

  3. 533 – An MDN was expected in the HTTP reply,but was not returned.

  4. 32000 – Remote host disconnected during SSL negotiation.

  5. 286:Unable to execute work queue.: Received fatal alert: HANDSHAKE_FAILURE

  6. Could not create SSL/TLS secure channel

原因分析

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

关于加密套件

加密套件是指在SSL通信中,服务器和客户端所使用的加密算法的组合。在SSL握手初期,客户端将自身支持的加密套件列表发送给服务器;在握手阶段,服务器根据自己的配置从中尽可能的选出一个套件,作为之后所要使用的加密方式。

每种加密套件中支持的加密算法大多包含了如下信息:

  • 密钥交换算法:用于决定客户端与服务器之间在握手的过程中如何认证。使用非对称加密算法来生成会话密钥,因为非对称算法不会将重要数据在通信中传输。用到的算法包括RSA、Diffie-Hellman和ECDHE。

  • 签名算法:用于CA证书签名。用到的算法包括RSA和DSS。

  • 加密算法:用于对数据进行加密传输。一般有对称加和非对称加密,但是非对称加密算法太耗性能,再者有些非对称加密算法有内容长度的限制,所以真正要传输的数据会使用对称加密来进行加密。算法名称后通常带密钥的长度和加密模式(GCM和CBC)。用到的算法包括:AES_128、AES_256、AES_128_CBC、AES_256_CBC、AES_128_GCM、AES_256_GCM和ChaCha20-Poly1305。

  • 完整性校验算法:用于校验消息的完整性。用到的算法包括SHA、SHA256和SHA384。

例如加密套件中支持的加密算法tls12_ck_rsa_aes_128_cbc_sha,此算法是基于TLS协议,使用的密钥交换算法为RSA,加密算法为AES_128_CBC(密钥长度为128

确认TLS版本和Cipher Suites

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

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

可以参考下面的表格来确定Cipher Suites 和其支持的TLS 协议版本

表格来源: https://learn.microsoft.com/en-us/windows/win32/secauthn/tls-cipher-suites-in-windows-10-v1511

设置TLS版本

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

第二步, 找到:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols选项,如下图:

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

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

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

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

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

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

参考文档

  1. https://thesecmaster.com/blog/how-to-disable-tls-1-0-and-tls-1-1-on-windows-server

  2. https://www.kasoftware.com/kb/2022/12/02/tls-and-ciphersuites.html

  3. https://learn.microsoft.com/en-us/windows/win32/secauthn/tls-cipher-suites-in-windows-10-v1511

  4. https://support.huawei.com/enterprise/zh/doc/EDOC1100290925/5eb1a375

0

评论区