Skip to content

Commit 217c7ce

Browse files
authored
Merge pull request #480 from kenkeiras/ssl-with-ca-example
Add example for SSL websocket with CA certificate
2 parents 13a304a + 370f217 commit 217c7ce

File tree

1 file changed

+111
-0
lines changed

1 file changed

+111
-0
lines changed
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
/*
2+
* WebSocketClientSSLWithCA.ino
3+
*
4+
* Created on: 27.10.2019
5+
*
6+
* note SSL is only possible with the ESP8266
7+
*
8+
*/
9+
10+
#include <Arduino.h>
11+
12+
#include <ESP8266WiFi.h>
13+
#include <ESP8266WiFiMulti.h>
14+
15+
#include <WebSocketsClient.h>
16+
17+
ESP8266WiFiMulti WiFiMulti;
18+
WebSocketsClient webSocket;
19+
20+
#define USE_SERIAL Serial1
21+
22+
23+
// Can be obtained with:
24+
// openssl s_client -showcerts -connect echo.websocket.org:443 </dev/null
25+
const char ENDPOINT_CA_CERT[] PROGMEM = R"EOF(
26+
-----BEGIN CERTIFICATE-----
27+
MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/
28+
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
29+
DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow
30+
SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT
31+
GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC
32+
AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF
33+
q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8
34+
SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0
35+
Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA
36+
a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj
37+
/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T
38+
AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG
39+
CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv
40+
bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k
41+
c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw
42+
VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC
43+
ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz
44+
MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu
45+
Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF
46+
AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo
47+
uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/
48+
wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu
49+
X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG
50+
PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6
51+
KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==
52+
-----END CERTIFICATE-----
53+
)EOF";
54+
55+
void webSocketEvent(WStype_t type, uint8_t * payload, size_t length) {
56+
switch(type) {
57+
case WStype_DISCONNECTED:
58+
USE_SERIAL.printf("[WSc] Disconnected!\n");
59+
break;
60+
case WStype_CONNECTED:
61+
{
62+
USE_SERIAL.printf("[WSc] Connected to url: %s\n", payload);
63+
64+
// send message to server when Connected
65+
webSocket.sendTXT("Connected");
66+
}
67+
break;
68+
case WStype_TEXT:
69+
USE_SERIAL.printf("[WSc] get text: %s\n", payload);
70+
71+
// send message to server
72+
// webSocket.sendTXT("message here");
73+
break;
74+
case WStype_BIN:
75+
USE_SERIAL.printf("[WSc] get binary length: %u\n", length);
76+
hexdump(payload, length);
77+
78+
// send data to server
79+
// webSocket.sendBIN(payload, length);
80+
break;
81+
}
82+
}
83+
84+
void setup() {
85+
USE_SERIAL.begin(115200);
86+
87+
USE_SERIAL.setDebugOutput(true);
88+
89+
USE_SERIAL.println();
90+
USE_SERIAL.println();
91+
USE_SERIAL.println();
92+
93+
for(uint8_t t = 4; t > 0; t--) {
94+
USE_SERIAL.printf("[SETUP] BOOT WAIT %d...\n", t);
95+
USE_SERIAL.flush();
96+
delay(1000);
97+
}
98+
99+
WiFiMulti.addAP("SSID", "passpasspass");
100+
101+
while(WiFiMulti.run() != WL_CONNECTED) {
102+
delay(100);
103+
}
104+
105+
webSocket.beginSslWithCA("echo.websocket.org", 443, "/", ENDPOINT_CA_CERT);
106+
webSocket.onEvent(webSocketEvent);
107+
}
108+
109+
void loop() {
110+
webSocket.loop();
111+
}

0 commit comments

Comments
 (0)