Android 13 meldet Zertifikatsfehler: GlobalSign R46 und die Lösung per Cross-Zertifikat

Am PC ist alles grün, aber auf älteren Android-Geräten scheitern App und Webview mit einem Zertifikatsfehler. Dahinter steckt fast immer eine Root-CA, die erst ab Android 14 bekannt ist.

Das Symptom

Ein Server bekommt ein neues Zertifikat, etwa bei der jährlichen Verlängerung. Im Browser am Rechner ist alles in Ordnung. Auf Geräten mit Android 13 oder älter brechen aber Apps, eingebettete Webviews oder Mail-Apps die Verbindung ab. Typische Meldungen sind:

java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
javax.net.ssl.SSLHandshakeException: … Trust anchor for certification path not found.

Browser wie Firefox bringen ihre eigene Liste vertrauenswürdiger Root-CAs mit und funktionieren deshalb manchmal trotzdem. Das macht die Fehlersuche verwirrend: Der Fehler tritt nicht überall auf, sondern nur in Apps, die den Zertifikatsspeicher des Systems verwenden.

Die Ursache: eine Root-CA, die Android 13 nicht kennt

Zertifizierungsstellen stellen ihre Zertifikate zunehmend unter neuen Root-CAs aus. Bei GlobalSign ist das die GlobalSign Root R46 (RSA) bzw. E46 (ECC). Diese Roots stehen erst ab Android 14 (Oktober 2023) im System-Zertifikatsspeicher. Android 13 und älter kennen sie nicht. Dasselbe gilt für weitere neuere Roots, etwa ISRG Root X2, DigiCert TLS RSA4096 Root G5 oder die HARICA-Roots von 2021.

Die Kette eines Server-Zertifikats sieht dann so aus:

www.beispiel.de          (Server-Zertifikat)
  └─ GlobalSign … CA       (Zwischenzertifikat)
       └─ GlobalSign Root R46   ← unter Android 13 unbekannt

Warum es nicht hilft, die Root-CA mitzuschicken

Naheliegend wäre, die Root R46 einfach mit in die Zertifikatsdatei zu packen. Das bringt nichts: Ein Client vertraut einer Root-CA nur dann, wenn sie in seinem eigenen Speicher liegt. Eine vom Server mitgeschickte Root wird nie als Vertrauensanker akzeptiert, sonst könnte jeder Server sich selbst beglaubigen. Auch die Root von Hand auf dem Gerät zu installieren, hilft den meisten Apps nicht. Seit Android 7 vertrauen Apps standardmäßig keinen vom Nutzer installierten Zertifikaten.

Die Lösung: ein Cross-Zertifikat

Ein Cross-Zertifikat enthält dieselbe CA, also denselben Namen und denselben Schlüssel wie die Root R46, ist aber von einer älteren Root unterschrieben, die auch alte Geräte kennen. Für R46 gibt es unter anderem ein Cross-Zertifikat von GlobalSign Root CA – R3. Schickt der Server dieses Cross-Zertifikat mit, ergibt sich für alte Geräte ein gültiger Weg:

www.beispiel.de
  └─ GlobalSign … CA
       └─ GlobalSign Root R46  (Cross, signiert von R3)
            └─ GlobalSign Root CA – R3   ← auch unter Android 13 vorhanden

Neue Geräte kennen R46 selbst und beenden die Prüfung dort. Alte Geräte gehen einen Schritt weiter bis R3. Beide vertrauen der Verbindung, ohne dass sich am Server-Zertifikat etwas ändert.

Schritt für Schritt

  1. Prüfen: Den Server im SSL-Check eingeben. Im Abschnitt „Ältere Geräte“ erscheint die Warnung, dass die Kette bei einer Root endet, die erst ab Android 14 vorhanden ist.
  2. Reparieren: Auf „Im Konverter reparieren“ klicken. Der Zertifikat-Konverter übernimmt die Kette und bietet das passende Cross-Zertifikat aus der Mozilla-CCADB an.
  3. Exportieren: Den privaten Schlüssel dazunehmen und das Format des Servers wählen, etwa ein PEM-Bundle für nginx oder eine PFX-Datei für IIS.
  4. Einspielen: Bei nginx zeigt ssl_certificate auf die neue Datei mit der Reihenfolge Server-Zertifikat → Zwischenzertifikat → Cross-Zertifikat. Danach den Dienst neu laden.
  5. Erneut prüfen: Der SSL-Check sollte jetzt bei „Ältere Geräte“ grün sein.
server {
    listen 443 ssl;
    server_name www.beispiel.de;
    ssl_certificate     /etc/ssl/beispiel/fullchain-cross.pem;   # Server + Zwischen-CA + Cross
    ssl_certificate_key /etc/ssl/beispiel/server.key;
}

Was du wissen solltest

FAQ

Betrifft das nur GlobalSign?

Nein. Jede Kette, die bei einer Root endet, die erst ab Android 14 im Speicher ist, ist betroffen, zum Beispiel auch ISRG Root X2 oder DigiCert TLS RSA4096 Root G5. Der SSL-Check erkennt das automatisch.

Kann ich die Root R46 auf dem Handy installieren?

Für den eigenen Browser ja, für die meisten Apps nein: Seit Android 7 vertrauen Apps nur noch dem System-Zertifikatsspeicher, nicht den vom Nutzer installierten Zertifikaten. Für Kunden-Geräte ist das ohnehin keine Lösung.

Schadet das Cross-Zertifikat neuen Geräten?

Nein. Neue Geräte kennen R46 selbst und beenden die Prüfung dort. Das Cross-Zertifikat wird für sie einfach nicht gebraucht.