---
title: "Ethernent Webserver SSL"
url: "https://maker.wiznet.io/eric_g/projects/ethernent-webserver-ssl/"
markdown_url: "https://maker.wiznet.io/eric_g/projects/ethernent-webserver-ssl/md"
type: "UCC: User Created Content"
author: "Khoi Hoang"
editor: "WIZnet"
editor_url: "https://maker.wiznet.io/"
original_author: "Khoi Hoang"
published: "2022-08-31"
language: "en"
hardware: ["WIZnet W5100", "WIZnet W5500", "WIZnet W5100S", "Arduino UNO", "Espressif ESP32", "Raspberry Pi RP2040"]
likes: 4
views: 1825
comments: 1
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# Ethernent Webserver SSL

> TLS/SSL Ethernet WebServer, HTTP Client and WebSocket Client library

Original author: Khoi Hoang

## Components

- **WIZnet W5100** x 1 ([docs](https://docs.wiznet.io/Product/Chip/Ethernet/W5100))
- **WIZnet W5500** x 1 ([docs](https://docs.wiznet.io/Product/Chip/Ethernet/W5500))
- **WIZnet W5100S** x 1 ([docs](https://docs.wiznet.io/Product/Chip/Ethernet/W5100S))
- **Arduino UNO** x 1 ([docs](https://www.farnell.com/datasheets/1682209.pdf))
- **Espressif ESP32** x 1 ([docs](https://www.espressif.com/en/products/socs/esp32))
- **Raspberry Pi RP2040** x 1 ([docs](https://www.raspberrypi.com/documentation/microcontrollers/rp2040.html))

WIZnet parts: W5500 ([Datasheet](https://docs.wiznet.io/Product/Chip/Ethernet/W5500/datasheet?utm_source=maker&utm_medium=project&utm_campaign=w5500), [product hub](https://maker.wiznet.io/products/w5500/))

## Documents and links

- [Ethernet Web Server SSL](https://github.com/khoih-prog/EthernetWebServer_SSL) (code)

## Article

**Why do we need this **[**EthernetWebServer_SSL library**](https://github.com/khoih-prog/EthernetWebServer_SSL)

**Features**

This [EthernetWebServer_SSL library](https://github.com/khoih-prog/EthernetWebServer_SSL) is a simple yet complete TLS/SSL WebClient and non-TLS/SSL WebServer library for **Teensy, SAM DUE, Arduino SAMD21, Adafruit SAMD21/SAMD51, Adafruit nRF52, ESP32/ESP8266, STM32, etc.** boards using Ethernet shields. The functions are similar and compatible to those of [ESP32 WebServer](https://github.com/espressif/arduino-esp32/tree/master/libraries/WebServer) and [ESP8266WebServer](https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WebServer) libraries to make life much easier to port sketches from ESP8266/ESP32.

The **RP2040-based boards, such as RASPBERRY_PI_PICO**, are currently supported using [**Arduino-mbed RP2040** core](https://github.com/arduino/ArduinoCore-mbed) or [**Earle Philhower's arduino-pico** core v1.3.1+](https://github.com/earlephilhower/arduino-pico).

This [EthernetWebServer_SSL library](https://github.com/khoih-prog/EthernetWebServer_SSL) adds [TLS 1.2](https://www.websecurity.digicert.com/security-topics/what-is-ssl-tls-https) functionality to EthernetClient, using BearSSL as an underlying TLS engine.

This [**EthernetWebServer_SSL library**](https://github.com/khoih-prog/EthernetWebServer_SSL), from v1.2.0, also provides high-level **HTTP and WebSocket Client** with the functions are similar and compatible to those of [**ArduinoHttpClient Library**](https://github.com/arduino-libraries/ArduinoHttpClient)

The library provides these features:

1. TCP Server and Client

2. UDP Server and Client

3. HTTP Server and HTTP/HTTPS Client

4. HTTPS GET and POST requests, provides argument parsing, handles one client at a time.

5. **High-level HTTP (GET, POST, PUT, PATCH, DELETE) and WebSocket Client**. From v1.2.0.

Library is based on and modified from:

1. [Ivan Grokhotkov's ESP8266WebServer](https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WebServer)

2. [Ivan Grokhotkov's ESP32 WebServer](https://github.com/espressif/arduino-esp32/tree/master/libraries/WebServer)

3. [OPEnSLab-OSU's SSLClient v1.6.9](https://github.com/OPEnSLab-OSU/SSLClient)

4. [ArduinoHttpClient Library](https://github.com/arduino-libraries/ArduinoHttpClient)

The EthernetWebServer class, found in EthernetWebServer.h header, is a simple WebServer class, knowing how to handle HTTP requests such as GET and POST and can only support one one client at a time.

The EthernetSSLClient class, found in SSLClient.h header, is a simple WebClient class, knowing how to handle HTTP/HTTPS requests such as GET and POST and can only support one client at a time.

**Currently supported Boards**

This [**EthernetWebServer_SSL** library](https://github.com/khoih-prog/EthernetWebServer_SSL) currently supports these following boards:

1. **nRF52 boards**, such as **AdaFruit Feather nRF52832, nRF52840 Express, BlueFruit Sense, Itsy-Bitsy nRF52840 Express, Metro nRF52840 Express, NINA_B302_ublox, NINA_B112_ublox, etc.**. Currently SSL WebClient is not working.

2. **SAM DUE**

3. **SAMD21**

- Arduino SAMD21: ZERO, MKRs, NANO_33_IOT, etc.

- Adafruit SAMD21 (M0): ItsyBitsy M0, Feather M0, Feather M0 Express, Metro M0 Express, Circuit Playground Express, Trinket M0, PIRkey, Hallowing M0, Crickit M0, etc.

- SeeedStudio: LoRaWAN, Zero, Femto M0, XIAO M0, Wio GPS Board, etc.

1. **SAMD51**

- Adafruit SAMD51 (M4): Metro M4, Grand Central M4, ItsyBitsy M4, Feather M4 Express, Trellis M4, Metro M4 AirLift Lite, MONSTER M4SK Express, Hallowing M4, etc.

- Seeeduino: WIO Terminal, Grove UI Wireless

**Teensy (4.1, 4.0, 3.6, 3.5, 3,2, 3.1, 3.0, LC) with SPI, SPI1, SPI2AVR Mega1280, 2560, ADK.**. SSL WebClient not supported yet. Check [Trivial sketch won't compile using Arduino 1.8.13](https://github.com/mike-matera/ArduinoSTL/issues/56)

ESP32

ESP8266. SSL WebClient not supported yet. Check [HTTPS GET request - ESP8266 - ENC28j60](https://github.com/OPEnSLab-OSU/SSLClient/issues/5)

RP2040-based boards, such as **RASPBERRY_PI_PICO, ADAFRUIT_FEATHER_RP2040 and GENERIC_RP2040**, using [**Arduino-mbed RP2040** core](https://github.com/arduino/ArduinoCore-mbed) or [**Earle Philhower's arduino-pico** core](https://github.com/earlephilhower/arduino-pico) with **SPI, SPI1**.

**Portenta_H7Currently supported Ethernet shields/modules**

1. W5x00 using [Ethernet_Generic](https://github.com/khoih-prog/Ethernet_Generic) library

2. W5x00 using [Ethernet](https://www.arduino.cc/en/Reference/Ethernet), [EthernetLarge](https://github.com/OPEnSLab-OSU/EthernetLarge), [Ethernet2](https://github.com/adafruit/Ethernet2) or [Ethernet3](https://github.com/sstaub/Ethernet3) library

3. ENC28J60 using [EthernetENC](https://github.com/jandrassy/EthernetENC) or [UIPEthernet](https://github.com/UIPEthernet/UIPEthernet) library

4. Teensy 4.1 built-in Ethernet using [NativeEthernet](https://github.com/vjmuzik/NativeEthernet) library

5. Teensy 4.1 built-in Ethernet using [QNEthernet](https://github.com/ssilverman/QNEthernet) library

6. Portenta_H7 Ethernet using [Portenta_Ethernet](https://github.com/arduino/ArduinoCore-mbed/tree/master/libraries/Ethernet) library

---

Source: https://maker.wiznet.io/eric_g/projects/ethernent-webserver-ssl/
