问题描述:
我在mbedtls握手阶段收到报错信息 -0x7200,网上查过相关问题,一般认为增大MBEDTLS_SSL_MAX_CONTENT_LEN会有帮助,但我已经用了最大值16384,仍不能解决问题。进一步排查发现问题出在函数mbedtls_ssl_parse_change_cipher_spec上。请问大家有没有遇到过类似的问题,或者有没有解决方法,万分感谢。
环境
stm32f103+w5500移植mbedtls官方库。
mbedtls握手返回-7200
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
14条回答 默认 最新
关注由人工智能和答主提供,可以参考如下,如果回答的不正确,及时评论区回复,我追加回答,谢谢。
在使用 mbedtls 进行 TLS 握手时,返回-0x7200错误码通常与MBEDTLS_ERR_SSL_INVALID_RECORD相关。这个错误表示 mbedtls 试图解析一个无效的 TLS 记录。针对这个问题,以下是一些建议和可能的解决方法:
调整缓冲区大小:
- 确保你的接收缓冲区足够大以容纳 TLS 记录。
MBEDTLS_SSL_MAX_CONTENT_LEN是一个参数,但同时也要考虑到 mbedtls 内部的缓冲区大小,如MBEDTLS_SSL_MAX_BUFFER_SIZE。
- 确保你的接收缓冲区足够大以容纳 TLS 记录。
检查片段的接收:
- 如果你的 TLS 记录是分片的,确保在接收到完整的记录片段之前不要尝试解析。
检查 mbedtls 版本:
- 如果可能,尝试更新 mbedtls 版本到最新版。有时候已知的问题在较新的版本中可能已经得到修复。
详细日志记录:
- 使用 mbedtls 的调试功能,启用详细的日志记录,以便更好地理解在哪个步骤出现了问题。你可以使用
MBEDTLS_DEBUG_C和MBEDTLS_SSL_DEBUG_ALL宏来启用调试。
- 使用 mbedtls 的调试功能,启用详细的日志记录,以便更好地理解在哪个步骤出现了问题。你可以使用
检查配置和密钥:
- 确保你的 TLS 配置正确,证书和密钥有效。
内存分配问题:
- 确保 mbedtls 使用的内存分配在你的环境中正常工作。
检查 mbedtls API 的正确调用:
- 确保你在调用 mbedtls API 时没有出错,比如检查返回值并根据需要执行错误处理。
查阅 mbedtls 文档和社区:
- 仔细查阅 mbedtls 的文档和社区,看看有没有与你的问题相关的信息。
这些建议可能需要一步一步地排查。如果问题仍然存在,你可能需要更详细地分析 TLS 握手的过程,以确定在哪个步骤出现了问题。
本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报解决 2无用 1