使用 W5500 在 STM32F303RC 中通过 HTTP 实现 TLS

如何解决使用 W5500 在 STM32F303RC 中通过 HTTP 实现 TLS

我正在尝试在我的 STM32F303RC MCU 中实现 HTTPS,我使用了 IoLibrary 提供的 HTTP CLIENT 示例,并按照 M. Bangbh 的提示 https://forum.wiznet.io/t/topic/7721 实现了 TLS。在与多个错误作斗争之后,我成功地将 GET 请求发送到服务器,调试时我可以清楚地看到从 MCU (192.168.137.2) 发送到服务器 (45.84.204.10) 的协议为 TLSv1.2 的请求。在服务器端,我有一个 php 页面,每当收到新请求时,它都会向 mysql 数据库添加一个字符串“hello”。 虽然我可以在 WireShark 中看到请求,但我看不到任何添加到 mysql 数据库中的数据,我只想知道我的 HTTPS 实现是否正确,或者我是否需要更改某些内容?如果实现正确,为什么我看不到从 php 页面保存到 mysql 数据库的任何数据?

index.php

mysql::query("insert into `tls` (`q`) values (?)",array("hello")); # the simplest php page ever

main.c

wiz_NetInfo defaultNetInfo = {

    .mac = {
        0x00,0x08,0xDC,0xFF,0xEE,0xDD
    },.ip = { 192,168,137,2 },.sn = { 255,255,0 },.gw = { 192,1 },.dns = {
        8,8,8
    },.dhcp = NETINFO_STATIC

};


uint8_t Domain_name[] = "www.onyxenia.com";

uint8_t URI[] = "/trunity?q=hello";


/**/
int main(void){
    /**/
    HAL_Init();
    /**/
    SystemClock_Config();
    /**/
    MX_GPIO_Init();
    MX_SPI1_Init();
    /**/
    HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET); HAL_Delay(250);
    HAL_GPIO_WritePin(GPIOA,GPIO_PIN_SET  ); HAL_Delay(250);
    /**/
    initialize();
    /**/
    HAL_Delay(5000);
    /**/
    wizchip_setnetinfo(&defaultNetInfo);
    /**/
    ctlnetwork(CN_SET_NETINFO,&defaultNetInfo);
    /**/
    if (process_dns()){
        /**/
        flag_process_dns_success = ON;
        /**/
    }
    /**/
    while(1){
        /**/
        httpc_init(SOCK_HTTPC,Domain_IP,443,g_send_buf,g_recv_buf);
        /**/
        while(1){
            /**/
            httpc_connection_handler();
            /**/
            if (httpc_isSockOpen){
                /**/
                httpc_connect();
                /**/
            }
            /**/
            if(httpc_isConnected){
                /**/
                if(!flag_sent_http_request){
                    /**/
                    request.method = (uint8_t*)HTTP_GET;
                    request.uri    = (uint8_t*)URI;
                    request.host   = (uint8_t*)Domain_name;
                    /**/
                    httpc_send(&request,g_recv_buf,0);
                    /**/
                    flag_sent_http_request = ENABLE;
                    /**/
                }
                /**/
                if (httpc_isReceived > 0){

                }
            }
        }
    }
}

以太网配置:

IP Address:  192.168.173.1    Preferred DNS server: 8.8.8.8
Subnet Mask: 255.255.255.0    Alternate DNS server: 8.8.4.4

*默认网关:空

互联网配置:

IP Address:      192.168.1.4    Preferred DNS server: 8.8.8.8
Default Gateway: 192.168.1.1    Alternate DNS server: 8.8.4.4

*子网掩码:255.255.255.0

硬件:

  1. STM32F303RC
  2. W5500

软件:

  1. CubeIDE
  2. WareShark

图书馆:

  1. IoLibrary
  2. MbedTLS

附件:

WireShark Screenshot

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)> insert overwrite table dwd_trade_cart_add_inc > select data.id, > data.user_id, > data.course_id, > date_format(
错误1 hive (edu)> insert into huanhuan values(1,'haoge'); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive> show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 <configuration> <property> <name>yarn.nodemanager.res