1- /* |----------------------------------------------------------|*/
2- /* |WORKING EXAMPLE FOR HTTPS CONNECTION |*/
3- /* |TESTED BOARDS: Devkit v1 DOIT, Devkitc v4 |*/
4- /* |CORE: June 2018 |*/
5- /* |----------------------------------------------------------|*/
1+ /* |-----------------------------------------------------------|*/
2+ /* |WORKING EXAMPLE FOR HTTPS CONNECTION |*/
3+ /* |Author: Bc. Martin Chlebovec |*/
4+ /* |Technical University of Košice |*/
5+ /* |TESTED BOARDS: Devkit v1 DOIT, Devkitc v4 |*/
6+ /* |CORE: 0.9x, 1.0.0, 1.0.1 tested, working (newer not tested)|*/
7+ /* |Supported methods: PEAP + MsCHAPv2, EAP-TTLS + MsCHAPv2 |*/
8+ /* |-----------------------------------------------------------|*/
9+
610#include < WiFi.h>
711#include < WiFiClientSecure.h>
812#include " esp_wpa2.h"
913#include < Wire.h>
10- #define EAP_IDENTITY " identity" // if connecting from another corporation, use identity@organisation.domain in Eduroam
11- #define EAP_PASSWORD " password" // your Eduroam password
12- const char * ssid = " eduroam" ; // Eduroam SSID
13- const char * host = " arduino.php5.sk" ; // external server domain for HTTP connection after authentification
14+ #define EAP_ANONYMOUS_IDENTITY " anonymous@example.com" // anonymous identity
15+ #define EAP_IDENTITY " id@example.com" // user identity
16+ #define EAP_PASSWORD " password" // eduroam user password
17+ const char * ssid = " eduroam" ; // eduroam SSID
18+ const char * host = " arduino.php5.sk" ; // external server domain for HTTPS connection
1419int counter = 0 ;
15- const char * test_root_ca= \
16- " -----BEGIN CERTIFICATE-----\n " \
17- " MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh\n " \
18- " MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n " \
19- " d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD\n " \
20- " QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT\n " \
21- " MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j\n " \
22- " b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG\n " \
23- " 9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB\n " \
24- " CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97\n " \
25- " nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt\n " \
26- " 43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P\n " \
27- " T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4\n " \
28- " gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO\n " \
29- " BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR\n " \
30- " TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw\n " \
31- " DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr\n " \
32- " hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg\n " \
33- " 06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF\n " \
34- " PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls\n " \
35- " YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk\n " \
36- " CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=\n " \
37- " -----END CERTIFICATE-----\n " ;
20+ const char * test_root_ca = \
21+ " -----BEGIN CERTIFICATE-----\n " \
22+ " MIIEsTCCA5mgAwIBAgIQCKWiRs1LXIyD1wK0u6tTSTANBgkqhkiG9w0BAQsFADBh\n " \
23+ " MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n " \
24+ " d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD\n " \
25+ " QTAeFw0xNzExMDYxMjIzMzNaFw0yNzExMDYxMjIzMzNaMF4xCzAJBgNVBAYTAlVT\n " \
26+ " MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j\n " \
27+ " b20xHTAbBgNVBAMTFFJhcGlkU1NMIFJTQSBDQSAyMDE4MIIBIjANBgkqhkiG9w0B\n " \
28+ " AQEFAAOCAQ8AMIIBCgKCAQEA5S2oihEo9nnpezoziDtx4WWLLCll/e0t1EYemE5n\n " \
29+ " +MgP5viaHLy+VpHP+ndX5D18INIuuAV8wFq26KF5U0WNIZiQp6mLtIWjUeWDPA28\n " \
30+ " OeyhTlj9TLk2beytbtFU6ypbpWUltmvY5V8ngspC7nFRNCjpfnDED2kRyJzO8yoK\n " \
31+ " MFz4J4JE8N7NA1uJwUEFMUvHLs0scLoPZkKcewIRm1RV2AxmFQxJkdf7YN9Pckki\n " \
32+ " f2Xgm3b48BZn0zf0qXsSeGu84ua9gwzjzI7tbTBjayTpT+/XpWuBVv6fvarI6bik\n " \
33+ " KB859OSGQuw73XXgeuFwEPHTIRoUtkzu3/EQ+LtwznkkdQIDAQABo4IBZjCCAWIw\n " \
34+ " HQYDVR0OBBYEFFPKF1n8a8ADIS8aruSqqByCVtp1MB8GA1UdIwQYMBaAFAPeUDVW\n " \
35+ " 0Uy7ZvCj4hsbw5eyPdFVMA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEF\n " \
36+ " BQcDAQYIKwYBBQUHAwIwEgYDVR0TAQH/BAgwBgEB/wIBADA0BggrBgEFBQcBAQQo\n " \
37+ " MCYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBCBgNVHR8E\n " \
38+ " OzA5MDegNaAzhjFodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNlcnRHbG9i\n " \
39+ " YWxSb290Q0EuY3JsMGMGA1UdIARcMFowNwYJYIZIAYb9bAECMCowKAYIKwYBBQUH\n " \
40+ " AgEWHGh0dHBzOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCwYJYIZIAYb9bAEBMAgG\n " \
41+ " BmeBDAECATAIBgZngQwBAgIwDQYJKoZIhvcNAQELBQADggEBAH4jx/LKNW5ZklFc\n " \
42+ " YWs8Ejbm0nyzKeZC2KOVYR7P8gevKyslWm4Xo4BSzKr235FsJ4aFt6yAiv1eY0tZ\n " \
43+ " /ZN18bOGSGStoEc/JE4ocIzr8P5Mg11kRYHbmgYnr1Rxeki5mSeb39DGxTpJD4kG\n " \
44+ " hs5lXNoo4conUiiJwKaqH7vh2baryd8pMISag83JUqyVGc2tWPpO0329/CWq2kry\n " \
45+ " qv66OSMjwulUz0dXf4OHQasR7CNfIr+4KScc6ABlQ5RDF86PGeE6kdwSQkFiB/cQ\n " \
46+ " ysNyq0jEDQTkfa2pjmuWtMCNbBnhFXBYejfubIhaUbEv2FOQB3dCav+FPg5eEveX\n " \
47+ " TVyMnGo=\n " \
48+ " -----END CERTIFICATE-----\n " ;
3849// You can use x.509 client certificates if you want
3950// const char* test_client_key = ""; //to verify the client
4051// const char* test_client_cert = ""; //to verify the client
@@ -47,42 +58,42 @@ void setup() {
4758 Serial.println (ssid);
4859 WiFi.disconnect (true ); // disconnect form wifi to set new wifi connection
4960 WiFi.mode (WIFI_STA); // init wifi mode
50- esp_wifi_sta_wpa2_ent_set_identity ((uint8_t *)EAP_IDENTITY , strlen (EAP_IDENTITY )); // provide identity
51- esp_wifi_sta_wpa2_ent_set_username ((uint8_t *)EAP_IDENTITY, strlen (EAP_IDENTITY)); // provide username --> identity and username is same
61+ esp_wifi_sta_wpa2_ent_set_identity ((uint8_t *)EAP_ANONYMOUS_IDENTITY , strlen (EAP_ANONYMOUS_IDENTITY )); // provide identity
62+ esp_wifi_sta_wpa2_ent_set_username ((uint8_t *)EAP_IDENTITY, strlen (EAP_IDENTITY)); // provide username
5263 esp_wifi_sta_wpa2_ent_set_password ((uint8_t *)EAP_PASSWORD, strlen (EAP_PASSWORD)); // provide password
53- esp_wpa2_config_t config = WPA2_CONFIG_INIT_DEFAULT (); // set config settings to default
54- esp_wifi_sta_wpa2_ent_enable (&config); // set config settings to enable function
64+ esp_wpa2_config_t config = WPA2_CONFIG_INIT_DEFAULT ();
65+ esp_wifi_sta_wpa2_ent_enable (&config);
5566 WiFi.begin (ssid); // connect to wifi
5667 while (WiFi.status () != WL_CONNECTED) {
5768 delay (500 );
5869 Serial.print (" ." );
5970 counter++;
60- if (counter>= 60 ){ // after 30 seconds timeout - reset board
71+ if (counter >= 60 ) { // after 30 seconds timeout - reset board (on unsucessful connection)
6172 ESP.restart ();
6273 }
6374 }
6475 client.setCACert (test_root_ca);
65- // client.setCertificate(test_client_key); // for client verification
66- // client.setPrivateKey(test_client_cert); // for client verification
76+ // client.setCertificate(test_client_key); // for client verification - certificate
77+ // client.setPrivateKey(test_client_cert); // for client verification - private key
6778 Serial.println (" " );
6879 Serial.println (" WiFi connected" );
69- Serial.println (" IP address set: " );
80+ Serial.println (" IP address set: " );
7081 Serial.println (WiFi.localIP ()); // print LAN IP
7182}
7283void loop () {
73- if (WiFi.status () == WL_CONNECTED) { // if we are connected to Eduroam network
84+ if (WiFi.status () == WL_CONNECTED) { // if we are connected to eduroam network
7485 counter = 0 ; // reset counter
75- Serial.println (" Wifi is still connected with IP: " );
86+ Serial.println (" Wifi is still connected with IP: " );
7687 Serial.println (WiFi.localIP ()); // inform user about his IP address
77- }else if (WiFi.status () != WL_CONNECTED) { // if we lost connection, retry
78- WiFi.begin (ssid);
88+ } else if (WiFi.status () != WL_CONNECTED) { // if we lost connection, retry
89+ WiFi.begin (ssid);
7990 }
8091 while (WiFi.status () != WL_CONNECTED) { // during lost connection, print dots
8192 delay (500 );
8293 Serial.print (" ." );
8394 counter++;
84- if (counter>= 60 ){ // 30 seconds timeout - reset board
85- ESP.restart ();
95+ if (counter >= 60 ) { // 30 seconds timeout - reset board
96+ ESP.restart ();
8697 }
8798 }
8899 Serial.print (" Connecting to website: " );
@@ -98,9 +109,9 @@ void loop() {
98109 }
99110 }
100111 String line = client.readStringUntil (' \n ' );
101- Serial.println (line);
102- }else {
103- Serial.println (" Connection unsucessful" );
104- }
112+ Serial.println (line);
113+ } else {
114+ Serial.println (" Connection unsucessful" );
115+ }
105116 delay (5000 );
106117}
0 commit comments