|
|
|
@ -13,38 +13,38 @@ const char* password = "your-password"; // your network password
|
|
|
|
|
|
|
|
|
|
const char* server = "www.howsmyssl.com"; // Server URL
|
|
|
|
|
|
|
|
|
|
// www.howsmyssl.com CA certificate, to verify the server
|
|
|
|
|
// change it to your server CA certificate
|
|
|
|
|
// www.howsmyssl.com root certificate authority, to verify the server
|
|
|
|
|
// change it to your server root CA
|
|
|
|
|
// SHA1 fingerprint is broken now!
|
|
|
|
|
|
|
|
|
|
const char* test_ca_cert = \
|
|
|
|
|
"-----BEGIN CERTIFICATE-----\n" \
|
|
|
|
|
"MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/\n" \
|
|
|
|
|
"MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT\n" \
|
|
|
|
|
"DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow\n" \
|
|
|
|
|
"SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT\n" \
|
|
|
|
|
"GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC\n" \
|
|
|
|
|
"AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF\n" \
|
|
|
|
|
"q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8\n" \
|
|
|
|
|
"SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0\n" \
|
|
|
|
|
"Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA\n" \
|
|
|
|
|
"a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj\n" \
|
|
|
|
|
"/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T\n" \
|
|
|
|
|
"AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG\n" \
|
|
|
|
|
"CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv\n" \
|
|
|
|
|
"bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k\n" \
|
|
|
|
|
"c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw\n" \
|
|
|
|
|
"VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC\n" \
|
|
|
|
|
"ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz\n" \
|
|
|
|
|
"MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu\n" \
|
|
|
|
|
"Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF\n" \
|
|
|
|
|
"AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo\n" \
|
|
|
|
|
"uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/\n" \
|
|
|
|
|
"wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu\n" \
|
|
|
|
|
"X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG\n" \
|
|
|
|
|
"PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6\n" \
|
|
|
|
|
"KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==\n" \
|
|
|
|
|
"-----END CERTIFICATE-----\n";
|
|
|
|
|
const char* test_root_ca= \
|
|
|
|
|
"-----BEGIN CERTIFICATE-----\n" \
|
|
|
|
|
"MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/\n" \
|
|
|
|
|
"MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT\n" \
|
|
|
|
|
"DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow\n" \
|
|
|
|
|
"SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT\n" \
|
|
|
|
|
"GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC\n" \
|
|
|
|
|
"AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF\n" \
|
|
|
|
|
"q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8\n" \
|
|
|
|
|
"SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0\n" \
|
|
|
|
|
"Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA\n" \
|
|
|
|
|
"a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj\n" \
|
|
|
|
|
"/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T\n" \
|
|
|
|
|
"AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG\n" \
|
|
|
|
|
"CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv\n" \
|
|
|
|
|
"bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k\n" \
|
|
|
|
|
"c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw\n" \
|
|
|
|
|
"VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC\n" \
|
|
|
|
|
"ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz\n" \
|
|
|
|
|
"MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu\n" \
|
|
|
|
|
"Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF\n" \
|
|
|
|
|
"AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo\n" \
|
|
|
|
|
"uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/\n" \
|
|
|
|
|
"wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu\n" \
|
|
|
|
|
"X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG\n" \
|
|
|
|
|
"PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6\n" \
|
|
|
|
|
"KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==\n" \
|
|
|
|
|
"-----END CERTIFICATE-----\n";
|
|
|
|
|
|
|
|
|
|
// You can use x.509 client certificates if you want
|
|
|
|
|
//const char* test_client_key = ""; //to verify the client
|
|
|
|
@ -71,14 +71,14 @@ void setup() {
|
|
|
|
|
|
|
|
|
|
Serial.print("Connected to ");
|
|
|
|
|
Serial.println(ssid);
|
|
|
|
|
|
|
|
|
|
client.setCACert(test_ca_cert);
|
|
|
|
|
//client.setCertificate(certificateBuff); // for client verification
|
|
|
|
|
//client.setPrivateKey(privateKeyBuff); // for client verification
|
|
|
|
|
|
|
|
|
|
client.setCACert(test_root_ca);
|
|
|
|
|
//client.setCertificate(test_client_key); // for client verification
|
|
|
|
|
//client.setPrivateKey(test_client_cert); // for client verification
|
|
|
|
|
|
|
|
|
|
Serial.println("\nStarting connection to server...");
|
|
|
|
|
if (!client.connect(server, 443))
|
|
|
|
|
Serial.println("Connection failed!");
|
|
|
|
|
Serial.println("Connection failed!");
|
|
|
|
|
else {
|
|
|
|
|
Serial.println("Connected to server!");
|
|
|
|
|
// Make a HTTP request:
|
|
|
|
@ -87,11 +87,13 @@ void setup() {
|
|
|
|
|
client.println("Connection: close");
|
|
|
|
|
client.println();
|
|
|
|
|
|
|
|
|
|
Serial.print("Waiting for response "); //WiFiClientSecure uses a non blocking implementation
|
|
|
|
|
while (!client.available()){
|
|
|
|
|
delay(50); //
|
|
|
|
|
Serial.print(".");
|
|
|
|
|
}
|
|
|
|
|
while (client.connected()) {
|
|
|
|
|
String line = client.readStringUntil('\n');
|
|
|
|
|
if (line == "\r") {
|
|
|
|
|
Serial.println("headers received");
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// if there are incoming bytes available
|
|
|
|
|
// from the server, read them and print them:
|
|
|
|
|
while (client.available()) {
|
|
|
|
@ -99,15 +101,10 @@ void setup() {
|
|
|
|
|
Serial.write(c);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// if the server's disconnected, stop the client:
|
|
|
|
|
if (!client.connected()) {
|
|
|
|
|
Serial.println();
|
|
|
|
|
Serial.println("disconnecting from server.");
|
|
|
|
|
client.stop();
|
|
|
|
|
}
|
|
|
|
|
client.stop();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void loop() {
|
|
|
|
|
// do nothing
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|