前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >14-STM32+CH395Q(以太网)基本控制篇(自建物联网平台)-移植mbedtls实现STM32+CH395Q以SSL单向认证方式连接MQTT服务器(不验证服务器证书)

14-STM32+CH395Q(以太网)基本控制篇(自建物联网平台)-移植mbedtls实现STM32+CH395Q以SSL单向认证方式连接MQTT服务器(不验证服务器证书)

作者头像
杨奉武
发布2021-07-20 11:27:48
7870
发布2021-07-20 11:27:48
举报
文章被收录于专栏:知识分享知识分享

<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ZLIOTB/CH395Q/my.html" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

说明

所谓SSL其实就是把通信的TCP数据进行了加密.SSL呢其实也算是协议.

整个的通信流程呢

TCP连接服务器 --> SSL握手(和服务器商量加密的密码) --> 组合发送的MQTT数据 -- 把数据经过SSL加密之后再发给服务器

开始(大家伙先按照步骤一步一步的操作,最后会详细说明整个程序运行流程)

开始(大家伙先按照步骤一步一步的操作,最后会详细说明整个程序运行流程)

开始(大家伙先按照步骤一步一步的操作,最后会详细说明整个程序运行流程)

1,工程就在这节的基础上进行更改

2.mbedtls-2.23.0是官方下载的包

3.建一个名字为 Mbedtls的文件夹

2.把mbedtls-2.23.0包里面的include和library 拷贝到Mbedtls文件夹里面

3.添加一个名字为 Mbedtls 的管理组

4.把 Library 里面的文件全部添加到里面

5.添加头文件路径

注意:上面只需要添加到 include路径即可!

6.编译一下工程

会报一些错误,没有关系,因为咱需要设置下配置文件

6.找到下面这个错误

其实这个地方并不是什么错误,只不过编译器不支持这样子写.

改为下面的样子

代码语言:javascript
复制
asn1_get_sequence_of_cb_ctx_t cb_ctx;
        cb_ctx.cur = cur;
        cb_ctx.tag = tag;

7.打开 aes.c文件,然后右击打开 config.h

9.把里面所有的#define全部屏蔽

咱以后用到什么功能再打开什么功能.

需要屏蔽的很多,自己慢慢的屏蔽!

10.屏蔽完编译一下工程

11.把以下两个文件添加到工程

12.在连接TCP的后面初始化一下

13.把网络接收的数据存储到SSL缓存里面

14.替换自己的tcp发送数据函数

我加了个延时等待发送完成,实际项目中最好用缓存替代.

15.在config.h打开以下宏

#define MBEDTLS_HAVE_ASM

#define MBEDTLS_NO_UDBL_DIVISION

#define MBEDTLS_HAVE_TIME

#define MBEDTLS_ENTROPY_HARDWARE_ALT

#define MBEDTLS_AES_ROM_TABLES

#define MBEDTLS_CIPHER_MODE_CBC

#define MBEDTLS_KEY_EXCHANGE_RSA_ENABLED

#define MBEDTLS_NO_PLATFORM_ENTROPY

#define MBEDTLS_PKCS1_V15

#define MBEDTLS_SSL_PROTO_TLS1_2

#define MBEDTLS_AES_C

#define MBEDTLS_ASN1_PARSE_C

#define MBEDTLS_ASN1_WRITE_C

#define MBEDTLS_BIGNUM_C

#define MBEDTLS_CIPHER_C

#define MBEDTLS_CTR_DRBG_C

#define MBEDTLS_ENTROPY_C

#define MBEDTLS_GCM_C

#define MBEDTLS_MD_C

#define MBEDTLS_MD5_C

#define MBEDTLS_OID_C

#define MBEDTLS_PK_C

#define MBEDTLS_PK_PARSE_C

#define MBEDTLS_PLATFORM_C

#define MBEDTLS_RSA_C

#define MBEDTLS_SHA1_C

#define MBEDTLS_SHA256_C

#define MBEDTLS_SHA512_C

#define MBEDTLS_SSL_CLI_C

#define MBEDTLS_SSL_TLS_C

#define MBEDTLS_X509_USE_C

#define MBEDTLS_X509_CRT_PARSE_C

16.设置加密套件(关于加密套件用户可以先去了解各种对称加密,非对称加密算法.这个加密套件需要服务器上面支持)

#define MBEDTLS_SSL_CIPHERSUITES MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA256

17.设置堆空间(就是使用malloc时所能用的空间,SSL内部使用了不小的malloc .....)

记得选择stm32F103RET6及其以上型号(光使用SSL就需要至少60KB的ROM, 至少64KB的RAM)

我堆设置的是 a000

18.编译一下

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说明
    • 所谓SSL其实就是把通信的TCP数据进行了加密.SSL呢其实也算是协议.
      • 整个的通信流程呢
        • TCP连接服务器 --> SSL握手(和服务器商量加密的密码) --> 组合发送的MQTT数据 -- 把数据经过SSL加密之后再发给服务器
        • 开始(大家伙先按照步骤一步一步的操作,最后会详细说明整个程序运行流程)
        • 开始(大家伙先按照步骤一步一步的操作,最后会详细说明整个程序运行流程)
        • 开始(大家伙先按照步骤一步一步的操作,最后会详细说明整个程序运行流程)
          • 1,工程就在这节的基础上进行更改
            • 2.mbedtls-2.23.0是官方下载的包
              • 3.建一个名字为 Mbedtls的文件夹
                • 2.把mbedtls-2.23.0包里面的include和library 拷贝到Mbedtls文件夹里面
                  • 3.添加一个名字为 Mbedtls 的管理组
                    • 4.把 Library 里面的文件全部添加到里面
                      • 5.添加头文件路径
                        • 注意:上面只需要添加到 include路径即可!
                      • 6.编译一下工程
                        • 会报一些错误,没有关系,因为咱需要设置下配置文件
                      • 6.找到下面这个错误
                        • 其实这个地方并不是什么错误,只不过编译器不支持这样子写.
                        • 改为下面的样子
                      • 7.打开 aes.c文件,然后右击打开 config.h
                        • 9.把里面所有的#define全部屏蔽
                          • 咱以后用到什么功能再打开什么功能.
                          • 需要屏蔽的很多,自己慢慢的屏蔽!
                        • 10.屏蔽完编译一下工程
                          • 11.把以下两个文件添加到工程
                            • 12.在连接TCP的后面初始化一下
                              • 13.把网络接收的数据存储到SSL缓存里面
                                • 14.替换自己的tcp发送数据函数
                                  • 我加了个延时等待发送完成,实际项目中最好用缓存替代.
                                • 15.在config.h打开以下宏
                                  • 16.设置加密套件(关于加密套件用户可以先去了解各种对称加密,非对称加密算法.这个加密套件需要服务器上面支持)
                                    • #define MBEDTLS_SSL_CIPHERSUITES MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA256
                                  • 17.设置堆空间(就是使用malloc时所能用的空间,SSL内部使用了不小的malloc .....)
                                    • 记得选择stm32F103RET6及其以上型号(光使用SSL就需要至少60KB的ROM, 至少64KB的RAM)
                                    • 我堆设置的是 a000
                                  • 18.编译一下
                                  相关产品与服务
                                  SSL 证书
                                  腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
                                  领券
                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档