SSL Verbindung mit Google

Ich habe mir die Aufgabe gestellt die google tabellen (sheets) mit dem ESP32 mit Daten zu füllen. Das erste Problem war die Verbindung zu  HTTPS, es hat nicht geklappt das richtige Zertifikat zu bekommen. Ich habe versucht das Beispiel WiFiClientSecure ESP32 für die Verbindung mit script.google.com zu verwenden. Die erste Erkenntnis war dass, die Kommunikation auch ohne Zertifikat Überprüfung funktioniert. Einfach folgende Zeile auskommentieren.

client.setCACert(test_root_ca);

Nach mehreren Stunden Recherche und Versuche hat es auch mit Zertifikat Überprüfung funktioniert. So bekommen Sie das root_ca Zertifikat über Firefox.

Öffnen Sie Die Seite script.google.com.
Navigieren Sie zum Menü Browsers zum Extras / Seiteninformationen.

In erschienen Fenster wechseln Sie zum Reiter Sicherheit / Zertifikat Anzeigen.

Wählen Sie das GlobalSignRootCA-R2 aus und betätigen Sie das Button Exportieren.

 

Es wird eine Datei erzeugt.

GlobalSignRootCA-R2.cr

Danach öffnen Sie die Datei mit einem Texteditor und kopieren den kompletten Inhalt in den Sketsch. Bitte fügen Sie den Inhalt der Zwischenablage zwischen diesen beiden Zeilen.

const char test_root_ca[] PROGMEM = R“=====(
)=====“ ;

Diese Schreibweise der konstanten Daten erspart das einfügen  vom „“ und /n Zeichen n jede Zeile.

Sie können gern das Root-CA  Zertifikat für Google auch von hier übernehmen, der ist bis Ende 2021 gültig.

In diesem Arduino Beispiel Sketch empfange ich die Google Webseite https://support.google.com/

Weil diese Webseite 342KB groß ist, kann die nicht im Terminal angezeigt werden. ESP32 kann die Seite komplett empfangen, aber nicht rechtzeitig über Serielle Schnittstelle ausgeben. Deswegen werden hier nur erste 1000 und letzte 256 Zeichen ausgegeben.

Das schreiben in das Google Tabellen  klappt bereits. Ich werde bald ein tutorial darüber schreiben.
Es wäre auch interessant die Zertifikat Datei „GlobalSignRootCA-R2.cr“ in Spiffs abzulegen und von da aus zu Lesen. Dass hätte ermöglicht bei dem Ablauf des  Zertifikates, den neue Fingerprint, ohne das Programm neu zu kompilieren, leicht zu installieren.