哈 里 谢 顿 2023-12-04 10:49 采纳率: 100%
浏览 174
已结题

mbedtls握手返回-7200

问题描述:
我在mbedtls握手阶段收到报错信息 -0x7200,网上查过相关问题,一般认为增大MBEDTLS_SSL_MAX_CONTENT_LEN会有帮助,但我已经用了最大值16384,仍不能解决问题。进一步排查发现问题出在函数mbedtls_ssl_parse_change_cipher_spec上。请问大家有没有遇到过类似的问题,或者有没有解决方法,万分感谢。
环境
stm32f103+w5500移植mbedtls官方库。

  • 写回答

14条回答 默认 最新

  • 叫兽-郭老师 新星创作者: Java技术领域 2023-12-04 10:56
    关注

    由人工智能和答主提供,可以参考如下,如果回答的不正确,及时评论区回复,我追加回答,谢谢。
    在使用 mbedtls 进行 TLS 握手时,返回 -0x7200 错误码通常与 MBEDTLS_ERR_SSL_INVALID_RECORD 相关。这个错误表示 mbedtls 试图解析一个无效的 TLS 记录。

    针对这个问题,以下是一些建议和可能的解决方法:

    1. 调整缓冲区大小

      • 确保你的接收缓冲区足够大以容纳 TLS 记录。MBEDTLS_SSL_MAX_CONTENT_LEN 是一个参数,但同时也要考虑到 mbedtls 内部的缓冲区大小,如 MBEDTLS_SSL_MAX_BUFFER_SIZE
    2. 检查片段的接收

      • 如果你的 TLS 记录是分片的,确保在接收到完整的记录片段之前不要尝试解析。
    3. 检查 mbedtls 版本

      • 如果可能,尝试更新 mbedtls 版本到最新版。有时候已知的问题在较新的版本中可能已经得到修复。
    4. 详细日志记录

      • 使用 mbedtls 的调试功能,启用详细的日志记录,以便更好地理解在哪个步骤出现了问题。你可以使用 MBEDTLS_DEBUG_CMBEDTLS_SSL_DEBUG_ALL 宏来启用调试。
    5. 检查配置和密钥

      • 确保你的 TLS 配置正确,证书和密钥有效。
    6. 内存分配问题

      • 确保 mbedtls 使用的内存分配在你的环境中正常工作。
    7. 检查 mbedtls API 的正确调用

      • 确保你在调用 mbedtls API 时没有出错,比如检查返回值并根据需要执行错误处理。
    8. 查阅 mbedtls 文档和社区

      • 仔细查阅 mbedtls 的文档和社区,看看有没有与你的问题相关的信息。

    这些建议可能需要一步一步地排查。如果问题仍然存在,你可能需要更详细地分析 TLS 握手的过程,以确定在哪个步骤出现了问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(13条)

报告相同问题?

问题事件

  • 系统已结题 12月18日
  • 已采纳回答 12月10日
  • 修改了问题 12月4日
  • 创建了问题 12月4日