Search code examples
c++esp32

ESP32 OTA HTTPS simple test


I don't really know what I'm doing wrong .. the code is simple yet I can't establish a connection with the server ..

The code

 #include "WiFi.h"
#include "HttpsOTAUpdate.h"

static const char *ssid     = "DSRSB2-1701 2.4Ghz"; 
static const char *password = "DSR112233"; 

static const char *url = "https://sandboxarduino.000webhostapp.com/Intern/tagroba.ino.esp32.bin"; 

static const char *server_certificate = "-----BEGINCERTIFICATE-----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-----ENDCERTIFICATE-----";

static HttpsOTAStatus_t otastatus;

void HttpEvent(HttpEvent_t *event)
{
    switch(event->event_id) {
        case HTTP_EVENT_ERROR:
            Serial.println("Http Event Error");
            break;
        case HTTP_EVENT_ON_CONNECTED:
            Serial.println("Http Event On Connected");
            break;
        case HTTP_EVENT_HEADER_SENT:
            Serial.println("Http Event Header Sent");
            break;
        case HTTP_EVENT_ON_HEADER:
            Serial.printf("Http Event On Header, key=%s, value=%s\n", event->header_key, event->header_value);
            break;
        case HTTP_EVENT_ON_DATA:
            break;
        case HTTP_EVENT_ON_FINISH:
            Serial.println("Http Event On Finish");
            break;
        case HTTP_EVENT_DISCONNECTED:
            Serial.println("Http Event Disconnected");
            break;
    }
}

void setup(){

    Serial.begin(115200);
    Serial.print("Attempting to connect to SSID: ");
    WiFi.begin(ssid, password);

    // attempt to connect to Wifi network:
    while (WiFi.status() != WL_CONNECTED) {
        Serial.print(".");
        delay(1000);
    }

    Serial.print("Connected to ");
    Serial.println(ssid);
    
    HttpsOTA.onHttpEvent(HttpEvent);
    Serial.println("Starting OTA");
    HttpsOTA.begin(url, server_certificate); 

    Serial.println("Please Wait it takes some time ...");
}

void loop(){
    otastatus = HttpsOTA.status();
    if(otastatus == HTTPS_OTA_SUCCESS) { 
        Serial.println("Firmware written successfully. ESP32 is going to restart");
        ESP.restart();
    } else if(otastatus == HTTPS_OTA_FAIL) { 
        Serial.println("Firmware Upgrade Fail");
    }
    delay(1000);
}

This is the output from Arduino IED serial monitor [serial monitor1

I really really appreciate your help


Solution

  • Your certificate has to be presented like it's stored in the CRT file. Don't remove the spaces, don't remove the newlines.

    static const char *server_certificate = R"(
    -----BEGIN CERTIFICATE-----
    MIIGQzCCBSugAwIBAgIQAa0laHpzho2fa0BMYg1P8DANBgkqhkiG9w0BAQsFADBe
    MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
    d3cuZGlnaWNlcnQuY29tMR0wGwYDVQQDExRSYXBpZFNTTCBSU0EgQ0EgMjAxODAe
    Fw0xOTA2MTEwMDAwMDBaFw0yMTA3MTAxMjAwMDBaMB4xHDAaBgNVBAMMEyouMDAw
    d2ViaG9zdGFwcC5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDS
    1VeFEunq8KmmqZOmfEwMMQ8XyBon6dY3JpkhrFPvB18pcFBFMDsQomb0+2Sw7YUL
    RdOUyOdg+t6fyLYF26cPPD2Gz5pbHL54z4pH/l3OKWz3Zeredv1UrBmzomcV7xwu
    X0Fr4IM5X37/ncXAXkROTUX2L7Osk1Im8YrzugkloJp6fUSRN3CGi7tT0eieLj1/
    8Ypf3lbeC7n+eNlYtLkF3xgebw2vymLCDq0apsUH3/AfedPk2HrQQjahqyDKmVkT
    JrfiQGupwsPyDgioWkplWzTSYWfPvd0bnUD6OMv0AWtNyuPfWIphcv4e1/f7yae2
    HRt3yGohbtGRQlLRmguvAgMBAAGjggM7MIIDNzAfBgNVHSMEGDAWgBRTyhdZ/GvA
    AyEvGq7kqqgcglbadTAdBgNVHQ4EFgQULGuBFhMxJAICmcEsNltAm7ZUUPkwMQYD
    VR0RBCowKIITKi4wMDB3ZWJob3N0YXBwLmNvbYIRMDAwd2ViaG9zdGFwcC5jb20w
    DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjA+
    BgNVHR8ENzA1MDOgMaAvhi1odHRwOi8vY2RwLnJhcGlkc3NsLmNvbS9SYXBpZFNT
    TFJTQUNBMjAxOC5jcmwwTAYDVR0gBEUwQzA3BglghkgBhv1sAQIwKjAoBggrBgEF
    BQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAIBgZngQwBAgEwdQYI
    KwYBBQUHAQEEaTBnMCYGCCsGAQUFBzABhhpodHRwOi8vc3RhdHVzLnJhcGlkc3Ns
    LmNvbTA9BggrBgEFBQcwAoYxaHR0cDovL2NhY2VydHMucmFwaWRzc2wuY29tL1Jh
    cGlkU1NMUlNBQ0EyMDE4LmNydDAJBgNVHRMEAjAAMIIBgQYKKwYBBAHWeQIEAgSC
    AXEEggFtAWsAdwDuS723dc5guuFCaR+r4Z5mow9+X7By2IMAxHuJeqj9ywAAAWtG
    LupkAAAEAwBIMEYCIQCRbhfk1eK9CwalKhfwJ8odjFmLMgP+ASTRXIDxCuACtgIh
    AJJYm7vNktHYGskTpVzNUPV2NcphPX3BFgGSdY3L4+qFAHcAh3W/51l8+IxDmV+9
    827/Vo1HVjb/SrVgwbTq/16ggw8AAAFrRi7rLAAABAMASDBGAiEAg9bwT7JowDEu
    3sgbL34x3Winvqbm/l6S5F0VFDj96mUCIQD5h55flAFZnf3Qp2GQGtdF6SkRLrus
    y+f3ylacQ60sywB3AESUZS6w7s6vxEAH2Kj+KMDa5oK+2MsxtT/TM5a1toGoAAAB
    a0Yu6bQAAAQDAEgwRgIhAKn1aPaoPH4KR4xT3Bv0fLVwDH/3dTQZZaqKm7En4m6X
    AiEA6pmYP8JuyhcKEx0joXOdpi4Lj5y1UcdSNRjitiN1cygwDQYJKoZIhvcNAQEL
    BQADggEBAJy0Y5EduI4Ep3geInlZ+WXi4k3w9Y9gARs1xHXZhD82U3PMkYonkBIs
    Wwz30ItA9FqI2pOG1KwytS9nieYu2IRRaPmJHPhCAXWHPGm/T1HRyFEc0p6OQY6g
    cFoSg9kAqFGogjzTIrTwLfmmjTaJNMRVivA2FFMValstTGPqPC+BccFOUD+wCHLU
    1q33d/LfFFei+1gOQT1cV04+KkPbsvONlFd3wcsONdfR2v96kWnxugX4HQsOvh31
    8nbZ8FKMG4VT5icoIygc//arJu4GUrYcQiLbL9K3a9Q3YqD8+4ip1UC/krpghWQK
    crNW8VHnUUVLd7mxjrflKrC+80DMQ5o=
    -----END CERTIFICATE-----
    )";