|
| 1 | +/** |
| 2 | + BasicHTTPSClient.ino |
| 3 | +
|
| 4 | + Created on: 20.08.2018 |
| 5 | +
|
| 6 | +*/ |
| 7 | + |
| 8 | +#include <Arduino.h> |
| 9 | +#include <WiFi.h> |
| 10 | +#include <HTTPClient.h> |
| 11 | + |
| 12 | +#ifndef STASSID |
| 13 | +#define STASSID "your-ssid" |
| 14 | +#define STAPSK "your-password" |
| 15 | +#endif |
| 16 | + |
| 17 | +const char *ssid = STASSID; |
| 18 | +const char *pass = STAPSK; |
| 19 | + |
| 20 | +WiFiMulti WiFiMulti; |
| 21 | + |
| 22 | +void setup() { |
| 23 | + |
| 24 | + Serial.begin(115200); |
| 25 | + // Serial.setDebugOutput(true); |
| 26 | + |
| 27 | + Serial.println(); |
| 28 | + Serial.println(); |
| 29 | + Serial.println(); |
| 30 | + |
| 31 | + for (uint8_t t = 4; t > 0; t--) { |
| 32 | + Serial.printf("[SETUP] WAIT %d...\n", t); |
| 33 | + Serial.flush(); |
| 34 | + delay(1000); |
| 35 | + } |
| 36 | + |
| 37 | + WiFi.mode(WIFI_STA); |
| 38 | + WiFiMulti.addAP(ssid, pass); |
| 39 | +} |
| 40 | + |
| 41 | +const char *jigsaw_cert = R"EOF( |
| 42 | +-----BEGIN CERTIFICATE----- |
| 43 | +MIIFKTCCBM+gAwIBAgIQAbTKhAICxb7iDJbE6qU/NzAKBggqhkjOPQQDAjBKMQsw |
| 44 | +CQYDVQQGEwJVUzEZMBcGA1UEChMQQ2xvdWRmbGFyZSwgSW5jLjEgMB4GA1UEAxMX |
| 45 | +Q2xvdWRmbGFyZSBJbmMgRUNDIENBLTMwHhcNMjIwMzE3MDAwMDAwWhcNMjMwMzE2 |
| 46 | +MjM1OTU5WjB1MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQG |
| 47 | +A1UEBxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQQ2xvdWRmbGFyZSwgSW5jLjEe |
| 48 | +MBwGA1UEAxMVc25pLmNsb3VkZmxhcmVzc2wuY29tMFkwEwYHKoZIzj0CAQYIKoZI |
| 49 | +zj0DAQcDQgAEYnkGDyrIltjRnxoVdy/xgndo+WGMOASzs2hHeCjbJ1KplKJc/ciK |
| 50 | +XCWq/4+pTzSiVgTFhRmCdLcU1Fa05YFNQaOCA2owggNmMB8GA1UdIwQYMBaAFKXO |
| 51 | +N+rrsHUOlGeItEX62SQQh5YfMB0GA1UdDgQWBBRIzOWGCDBB/PMrMucSrjIKqlgE |
| 52 | +uDAvBgNVHREEKDAmghVzbmkuY2xvdWRmbGFyZXNzbC5jb22CDWppZ3Nhdy53My5v |
| 53 | +cmcwDgYDVR0PAQH/BAQDAgeAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD |
| 54 | +AjB7BgNVHR8EdDByMDegNaAzhjFodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vQ2xv |
| 55 | +dWRmbGFyZUluY0VDQ0NBLTMuY3JsMDegNaAzhjFodHRwOi8vY3JsNC5kaWdpY2Vy |
| 56 | +dC5jb20vQ2xvdWRmbGFyZUluY0VDQ0NBLTMuY3JsMD4GA1UdIAQ3MDUwMwYGZ4EM |
| 57 | +AQICMCkwJwYIKwYBBQUHAgEWG2h0dHA6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzB2 |
| 58 | +BggrBgEFBQcBAQRqMGgwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0 |
| 59 | +LmNvbTBABggrBgEFBQcwAoY0aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0Ns |
| 60 | +b3VkZmxhcmVJbmNFQ0NDQS0zLmNydDAMBgNVHRMBAf8EAjAAMIIBfwYKKwYBBAHW |
| 61 | +eQIEAgSCAW8EggFrAWkAdQDoPtDaPvUGNTLnVyi8iWvJA9PL0RFr7Otp4Xd9bQa9 |
| 62 | +bgAAAX+aFPh6AAAEAwBGMEQCICivjuh2ywUYvVpTKHo65JEheR8dFq8QvBgEiXfw |
| 63 | +m6q6AiAkxAgz77oboGQGetNmab45+peY+nAGOfyW9vi9S1gMaAB3ADXPGRu/sWxX |
| 64 | +vw+tTG1Cy7u2JyAmUeo/4SrvqAPDO9ZMAAABf5oU+GEAAAQDAEgwRgIhANKeTNMy |
| 65 | +GqUsCo7ph7YMWzrhMuDeyP8xPSiCtFzKcn/eAiEAyv5lgCUQ6K14V13zYfL99wZD |
| 66 | +LFcIP/KZ1y7nuPAksTAAdwCzc3cH4YRQ+GOG1gWp3BEJSnktsWcMC4fc8AMOeTal |
| 67 | +mgAAAX+aFPiWAAAEAwBIMEYCIQD6535jWw776D4vjyupP2fBw26CBMpVT5++k4rR |
| 68 | +xqeOXwIhAIbEaEKkEq6JtpWWfVpTyDkMpMfTuiqYVe6REy2XsmEhMAoGCCqGSM49 |
| 69 | +BAMCA0gAMEUCIH3r/puXZcX1bfUoBq2njuHe0bxWtvzDaz5k6WLYrazTAiEA+ePL |
| 70 | +N6K5xrmaof185pVCxACPLc/BoKyUwMeC8iXCm00= |
| 71 | +-----END CERTIFICATE----- |
| 72 | +)EOF"; |
| 73 | + |
| 74 | +static int cnt = 0; |
| 75 | + |
| 76 | +void loop() { |
| 77 | + // wait for WiFi connection |
| 78 | + if ((WiFiMulti.run() == WL_CONNECTED)) { |
| 79 | + HTTPClient https; |
| 80 | + switch (cnt) { |
| 81 | + case 0: |
| 82 | + Serial.println("[HTTPS] using insecure SSL, not validating certificate"); |
| 83 | + https.setInsecure(); // Note this is unsafe against MITM attacks |
| 84 | + cnt++; |
| 85 | + break; |
| 86 | + case 1: |
| 87 | + Serial.println("[HTTPS] using secure SSL, validating certificate"); |
| 88 | + https.setCACert(jigsaw_cert); |
| 89 | + cnt++; |
| 90 | + break; |
| 91 | + default: |
| 92 | + Serial.println("[HTTPS] not setting any SSL verification settings, will fail"); |
| 93 | + cnt = 0; |
| 94 | + } |
| 95 | + |
| 96 | + Serial.print("[HTTPS] begin...\n"); |
| 97 | + if (https.begin("https://jigsaw.w3.org/HTTP/connection.html")) { // HTTPS |
| 98 | + |
| 99 | + Serial.print("[HTTPS] GET...\n"); |
| 100 | + // start connection and send HTTP header |
| 101 | + int httpCode = https.GET(); |
| 102 | + |
| 103 | + // httpCode will be negative on error |
| 104 | + if (httpCode > 0) { |
| 105 | + // HTTP header has been send and Server response header has been handled |
| 106 | + Serial.printf("[HTTPS] GET... code: %d\n", httpCode); |
| 107 | + |
| 108 | + // file found at server |
| 109 | + if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) { |
| 110 | + String payload = https.getString(); |
| 111 | + Serial.println(payload); |
| 112 | + } |
| 113 | + } else { |
| 114 | + Serial.printf("[HTTPS] GET... failed, error: %s\n", https.errorToString(httpCode).c_str()); |
| 115 | + } |
| 116 | + |
| 117 | + https.end(); |
| 118 | + } else { |
| 119 | + Serial.printf("[HTTPS] Unable to connect\n"); |
| 120 | + } |
| 121 | + } |
| 122 | + |
| 123 | + Serial.println("Wait 10s before next round..."); |
| 124 | + delay(10000); |
| 125 | +} |
0 commit comments