Hallo
Dein Problem ist, das Google das Zertifikat regelmäßig austauscht. Schaut man sich das Zertifikat an, dann sieht man wie lange das gültig ist:
openssl s_client -connect mail.google.com:443 < /dev/null 2>/dev/null | openssl x509 -text -noout | head -10
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 8632150817701270013 (0x77cb8f6f00ae91fd)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, O=Google Trust Services, CN=Google Internet Authority G3
Validity
Not Before: Sep 13 17:50:58 2017 GMT
Not After : Dec 6 17:10:00 2017 GMT
Subject: C=US, ST=California, L=Mountain View, O=Google Inc, CN=mail.google.com
Aktuell also noch bis zum 06.12.2017.
Evtl. solltest Du nicht die Funktion
WiFiClientSecure::verify(const char* fp, const char* domain_name)
sondern
verifyCertChain(const char* domain_name)
zum Prüfen verwenden. Allerdings wird das Root CA (Certificate Authority) Zertifikat nicht mitgeschickt, sondern nur Googles eigenes Intermediate. Daher musst Du Dir das Root-CA Zertifikat einmal besorgen (z.B. von Deinem Linux Rechner, bei mir liegt das unter /etc/ssl/certs/GlobalSign_Root_CA_-_R2.pem) und das zum Prüfen verwenden, denn das ist quasi der "Anfang" der Vertrauenskette.
Mit Hilfe von
bool WiFiClientSecure::setCACert(const uint8_t* pk, size_t size)
sollte sich das CA-Zertifikat vorher aus einem char* laden lassen. Das sind auch nur 1.2kb, die sollten sich im Quellcode als Konstante definieren lassen.
Das Root-CA ist bis 2021 gültig und damit hast Du dann etwas mehr Ruhe
Ja, das sieht sehr gut aus. Zusätzlich habe ich das hier gefunden:
Dort wird das OAuth2 von Google verwendet und nicht das klassische IMAP Login. Damit muss man den google nicht mehr die Option "unsichere Apps zulassen" Option nutzen.
Soweit ich das verstanden habe, generiert man sich für seinen ESP ein Access-Token / App-Token über den man sich dann mit seinen Zugangsdaten ein temporäres Login-Token für IMAP generieren kann.
Damit klappt dann der Zugriff auf der Postfach. Vor allem kann man dann direkt IMAP sprechen und hat mehr Möglichkeiten als per HTTPS nur den Feed abzugreifen.
So mit Sicherheit nicht. Da sind sie leer.
Grzuß Tommy