【发布时间】:2017-07-31 12:56:09
【问题描述】:
我有一个使用 AWS 开发工具包连接 AWS IoT 的实施。它在 Linux 上运行良好。 我正在尝试将其移植到基于 FreeRTOS 的嵌入式系统。 mbedtls 在带有 ssl 包装器的 AWS 开发工具包中使用。
mbedtls 方面有一些小的修改(我提供从 sntp 到 mbedtls 的时间)。
当我启用 mbedtls 调试时,我看到一切都很好并且握手已完成。但是在握手之后,我收到了来自 AWS SDK 的连接关闭消息。
ssl_cli.c : 3303 - client state: MBEDTLS_SSL_FLUSH_BUFFERS (14)
ssl_cli.c : 3303 - client state: MBEDTLS_SSL_HANDSHAKE_WRAPUP (15)
ssl_tls.c : 5024 - <= handshake wrapup
ssl_tls.c : 6346 - <= handshake
ssl_tls.c : 2701 - => write record
ssl_tls.c : 1258 - => encrypt buf
ssl_tls.c : 1400 - before encrypt: msglen = 125, including 0 bytes of padding
ssl_tls.c : 1560 - <= encrypt buf
ssl_tls.c : 2838 - output record: msgtype = 23, version = [3:3], msglen = 141
ssl_tls.c : 2416 - => flush output
ssl_tls.c : 2435 - message length: 146, out_left: 146
ssl_tls.c : 2441 - ssl->f_send() returned 146 (-0xffffff6e)
ssl_tls.c : 2460 - <= flush output
ssl_tls.c : 2850 - <= write record
ssl_tls.c : 6883 - <= write
ssl_tls.c : 6514 - => read
ssl_tls.c : 3728 - => read record
ssl_tls.c : 2208 - => fetch input
ssl_tls.c : 2366 - in_left: 0, nb_want: 5
ssl_tls.c : 2390 - in_left: 0, nb_want: 5
ssl_tls.c : 2391 - ssl->f_recv(_timeout)() returned 5 (-0xfffffffb)
ssl_tls.c : 2403 - <= fetch input
ssl_tls.c : 3488 - input record: msgtype = 21, version = [3:3], msglen = 26
ssl_tls.c : 2208 - => fetch input
ssl_tls.c : 2366 - in_left: 5, nb_want: 31
ssl_tls.c : 2390 - in_left: 5, nb_want: 31
ssl_tls.c : 2391 - ssl->f_recv(_timeout)() returned 26 (-0xffffffe6)
ssl_tls.c : 2403 - <= fetch input
ssl_tls.c : 1576 - => decrypt buf
ssl_tls.c : 2051 - <= decrypt buf
ssl_tls.c : 3961 - **got an alert message, type: [1:0]**
ssl_tls.c : 3976 - **is a close notify message**
正如我所读到的,“收到一条警报消息,输入:[1:0]”表示 AWS 关闭了连接,但为什么以及这意味着什么?
我在 Wireshark 中看到了“应用程序数据”条目。所以可能我在应用程序数据事务的中间收到了 AWS 关闭警报。
我还看到类似“这意味着证书对 AWS 来说不够宽松”的评论,但我在 Linux 和嵌入式端都使用相同的证书。
任何想法。我该如何调试它?
【问题讨论】:
标签: amazon-web-services ssl aws-iot