ESP8266 RTOS SDK 中基于SSL的MQTT通信证书问题

SDK链接:https://github.com/espressif/ESP8266_RTOS_SDK

编译环境主机:Ubuntu server 16.04,根据官方文档把相应环境配置好了。

代码:https://github.com/espressif/ESP8266_RTOS_SDK/tree/master/examples/protocols/esp-mqtt/ssl

 

问题1:mbedtls_ssl_fetch_input() returned -80 (-0050)如下图。

ESP8266 RTOS SDK 中基于SSL的MQTT通信证书问题

 

问题2:哈希算法不匹配。

SSL连接过程中需要验证证书,证书制作环节中,流程基本上是客户端对文本做哈希,把哈希值在CA侧签名。验证过程中,需要用CA解密,再验证哈希,哈希对了就验证成功。由于算法不匹配,所以哈希一般对不了,证书的校验失败了。

 

解决问题过程中,发现MbedTLS的证书验证过程好像不支持用SHA1的算法做哈希,如果做证书的时候,用SHA1算法做哈希的话,会出问题。而且需要用2048位以上的**做证书才行。

我重新做了证书,在网上随便找了一个证书一键制作脚本,看了下做证书的时候,哈希选择的参数不是SHA1,然后按照制作好了新的证书,把服务端和8266的证书都相应的替换成现在的,就好了。

解决了第二个问题以后,第一个问题也没有出现过。