代码之家  ›  专栏  ›  技术社区  ›  DanG

无法设置SSL连接,即使它似乎与AWS的NodeMCU ESP8266连接

  •  0
  • DanG  · 技术社区  · 5 年前

    我正在尝试连接NodeMCU ESP8266并上传阴影。我正在关注 tutorial from IoT Design Pro 。当我第一次运行它时,我确实看到AWS上的影子更新了。在后续循环中,它停止了更新。现在我收到一条消息“无法设置SSL连接”。以下是我的代码和串行输出窗口:

    #include <ESP8266WiFi.h>
    
    #include <AmazonIOTClient.h>
    
    #include "ESP8266AWSImplementations.h"
    
    Esp8266HttpClient httpClient;
    
    Esp8266DateTimeProvider dateTimeProvider;
    
    AmazonIOTClient iotClient;
    
    ActionError actionError;
    
    char *ssid="xxxxxxxxxxxxxxxxxxx";
    
    char *password="xxxxxxxxxxx";
    
    void setup() {
    
      Serial.begin(115200);
    
      delay(10);
    
      // Connect to WAP
    
      Serial.print("Connecting to ");
    
      Serial.println(ssid);
    
      WiFi.begin(ssid, password);
    
      while (WiFi.status() != WL_CONNECTED) {
    
        delay(500);
    
        Serial.print(".");
    
      }
    
      Serial.println("");
    
      Serial.println("WiFi connected");
    
      Serial.println("IP address: ");
    
      Serial.println(WiFi.localIP());
    
    
    
      iotClient.setAWSRegion("us-west-2");//axxxxxxxxxxxb-ats.iot.us-west-2.amazonaws.com
    
      iotClient.setAWSEndpoint("amazonaws.com");
    
      iotClient.setAWSDomain("axxxxxxxxxxxb-ats.iot.us-west-2.amazonaws.com");
    
      iotClient.setAWSPath("/things/MyThing/shadow");
    
      iotClient.setAWSKeyID("AxxxxxxxxxxxxxxxxxxW");
    
      iotClient.setAWSSecretKey("BxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxWmN1");
    
      iotClient.setHttpClient(&httpClient);
    
      iotClient.setDateTimeProvider(&dateTimeProvider);
    
    }
    
    
    
    void loop(){
    
      char* shadow = "{\"state\":{\"reported\": {\"Foobar\": \"bar\"}}}";
    
      char* result = iotClient.update_shadow(shadow, actionError);
    
      Serial.print(result);
    
      delay(500000);
    
    }
    

    具有串行输出:

    WiFi connected
    IP address: 
    10.1.10.128
    a2rl12mynda91b-ats.iot.us-west-2.amazonaws.com
    443
    POST /things/MyThing/shadow HTTP/1.1
    Content-Type: application/json
    Connection: close
    Content-Length: 41
    Host: axxxxxxxxxxxb-ats.iot.us-west-2.amazonaws.com
    x-amz-content-sha256: d8af3f7d20512e6c2f9feddf0e729a9f9201023da39cde8ffa6826175c069174
    x-amz-date: 20200122T221521Z
    Authorization: AWS4-HMAC-SHA256 Credential=AxxxxxxxxxxxxxxxxxxW/20200122/us-west-2/iotdata/aws4_request,SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date,Signature=1d5e8b7d70a67d91704403796fd7bdae28b7f9396523314af98e3e1857b4368a
    
    {"state":{"reported": {"Foobar": "bar"}}}
    
    
    
    
    can't setup SSL connection
    

    AWS IoT影子输出: enter image description here 串行输出是否表明它已连接?我认为授权行意味着它正在连接,不是吗?我看不出我哪里做错了。

    谢谢。

    0 回复  |  直到 5 年前
        1
  •  0
  •   VSMent    5 年前

    类似的问题也发生在我身上。

    有两个板ESP32和ESP8266,只有32个能够通过HTTPS发出请求。

    选项1 :发送没有SSL的请求

    选项2 :使用正确的指纹发送请求

    一些有用的链接:

    https://buger.dread.cz/simple-esp8266-https-client-without-verification-of-certificate-fingerprint.html

    https://github.com/esp8266/Arduino/issues/3417

    推荐文章