我有一个使用AWS SDK连接AWS IoT的实现。它在Linux上运行良好。 我试图将它移植到基于FreeRTOS的嵌入式系统。 mbedtls在AWS SDK中使用ssl包装器。
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**
在我阅读时,&#34;收到一条警告信息,输入:[1:0]&#34;意味着AWS关闭了连接但是为什么以及它意味着什么?
我看到了一个&#34;应用数据&#34;进入Wireshark。因此,我可能正在应用程序数据事务中获取AWS Close警报。
我还看到了像#34这样的评论;这意味着证书不足以让AWS&#34;但我在Linux和嵌入式方面都使用相同的证书。
任何想法。我该怎么调试呢?
答案 0 :(得分:0)
我建议仔细检查您的策略(以及证书以及它们与您的事物之间的链接)。 我遇到了同样的问题,解决方案是将政策从以下位置更改:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iot :*",
"Resource": "*"
}
]
}
收件人:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iot:*",
"Resource": "*"
}
]
}
即:“动作”字符串丢失了空格字符。