Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

客户端多次断开重连以后,出现SSL无法解密的情况 #7

Closed
laoLiangLoveProgram opened this issue Jun 20, 2023 · 8 comments

Comments

@laoLiangLoveProgram
Copy link

Please answer some questions before submitting your issue. Thanks!

  1. 客户端在运行过程中多次重连服务端,服务端发送的ssl加密后的数据到达客户端后出现无法解析的情况,两端的ssl数据不一致,同时服务端报错:
    image
  2. 测试情况下,客户端保持正常连接,服务端重启以后,客户端重连,报同样的错误

Which version of Mica do you using(使用的 mica 版本)?

mica-mqtt-server-spring-boot-starter:2.2.1
mica-mqtt-client-spring-boot-starter:2.2.1

Expected behavior(预期的效果)

预期:数据正常解析

Actual behavior(实际的效果)

实际:数据在服务端的加密密文和客户端接收的加密密文不一致

Steps to reproduce the behavior(重现步骤)

重现方法:客户端正常运行,服务端重启,客户端重连,服务端可出现对应报错

Other information(其他信息)

@ChunMengLu
Copy link
Contributor

是使用的2套证书,还是一套?我本地尝试复现下

@laoLiangLoveProgram
Copy link
Author

一套证书,只开启了服务端证书,mqtt.server.ssl.client-auth=NONE

@ChunMengLu
Copy link
Contributor

一套证书,只开启了服务端证书,mqtt.server.ssl.client-auth=NONE

收到,我验证下

@ChunMengLu
Copy link
Contributor

有什么特殊的处理么?比如断连之后更新了 ssl 配置???我的配置:

服务端

.useSsl("classpath:ssl/dreamlu.net.jks", "123456")

客户端

.useSsl("classpath:ssl/dreamlu.net.jks", "123456")

起了2个客户端,让他们互相踢,几个小时了,目前还没出现你这种情况。

@ChunMengLu
Copy link
Contributor

这个是 chatgpt 的一个回答,你看看对你有帮助不?

"SSL tag mismatch"是在使用SSL(Secure Socket Layer)或TLS(Transport Layer Security)协议建立安全连接时可能出现的错误。这个错误通常发生在服务器和客户端之间进行握手过程时,表示服务器提供的证书中的某些标签与客户端期望的标签不匹配。

造成"SSL tag mismatch"错误的原因可能有以下几种:

  1. 证书链的问题:服务器证书链中的某个证书可能已过期、被吊销或无效,或者证书链没有正确配置。客户端会对服务器提供的证书进行验证,并检查证书是否由受信任的颁发机构签发,如果验证失败,就会报告"SSL tag mismatch"错误。

  2. 域名不匹配:服务器证书中包含了一个或多个Subject Alternative Name (SAN)或Common Name (CN)字段,用于指定服务器所服务的域名。当客户端访问服务器时,会验证服务器的域名是否与证书中的域名匹配。如果域名不匹配,就会导致"SSL tag mismatch"错误。

  3. SSL/TLS版本不匹配:服务器和客户端使用不同的SSL/TLS版本进行通信时,可能导致"SSL tag mismatch"错误。服务器和客户端需要协商一致的SSL/TLS版本,否则就会出现不匹配的错误。

解决"SSL tag mismatch"错误可以尝试以下几种方法:

  1. 检查证书:确保服务器使用的证书是有效的,并且证书链配置正确。可以检查证书是否过期、是否由受信任的颁发机构签发,并验证证书链的完整性。

  2. 检查域名匹配:确保服务器证书中的域名与客户端访问的域名匹配。可以检查证书中的Subject Alternative Name (SAN)字段或Common Name (CN)字段,确保包含了正确的域名。

  3. 更新SSL/TLS版本:如果服务器和客户端使用的SSL/TLS版本不一致,可以尝试升级或降级其中一方的SSL/TLS版本,确保它们能够协商一致的版本进行通信。

如果以上方法无法解决问题,建议联系服务器管理员或SSL证书提供商寻求进一步支持和指导。

@ChunMengLu
Copy link
Contributor

ChunMengLu commented Jul 4, 2023

@laoLiangLoveProgram 你按照常见问题汇总里的步骤,重新签个证书试试:#2

对了 2.2.2 修复 starter ssl truststorePass 配置,更新下版本哦

@laoLiangLoveProgram
Copy link
Author

收到,排查了一圈,应该是加密套件协议的问题导致的,客户端和服务器用的协议不匹配导致这个问题

@ChunMengLu
Copy link
Contributor

有可能与这个问题同源:https://gitee.com/596392912/mica-mqtt/issues/I8LCMY

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants