使用 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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...