Warum erscheinen manche HTTPS-Anfragen im Charles Proxy als „missing certificate“?
Charles Proxy fungiert als ein sogenannter Man-in-the-Middle (MITM) Proxy, um HTTPS-Verkehr entschlüsseln und anzeigen zu können. Dabei agiert Charles zwischen dem Client und dem Zielserver, indem es die verschlüsselte Kommunikation abfängt und entschlüsselt. Um dies zu ermöglichen, generiert Charles eigene Zertifikate für die jeweiligen Zielseiten, die an den Client präsentiert werden. Damit der Client diese Zertifikate akzeptiert, muss das Charles Root-Zertifikat auf dem Gerät installiert und als vertrauenswürdig eingestuft sein. Sonst kommt es zu Warnungen oder Verbindungsabbrüchen.
Wenn im Charles Proxy eine HTTPS-Anfrage mit dem Hinweis missing certificate angezeigt wird, bedeutet das in der Regel, dass Charles den zugehörigen Serverzertifikat nicht erhalten oder nicht korrekt verarbeiten konnte. Dies kann mehrere Ursachen haben: Zum einen kann es sein, dass der Zielserver während der TLS-Handschlagphase kein Zertifikat bereitgestellt hat, was äußerst ungewöhnlich, aber technisch möglich ist. Vielleicht handelt es sich auch um eine spezielle Art von TLS-Verbindung, wie beispielsweise eine Verbindung, die frühe TLS-Auswahlmechanismen (TLS 1.3) oder proprietäre Protokollerweiterungen benutzt, welche Charles nicht vollständig unterstützt oder entschlüsseln kann. Weiterhin kann das missing certificate-Problem entstehen, wenn die Verbindung direkt zwischen Client und Server abgesichert ist und Charles nur als transparenter Proxy mithört, allerdings nicht aktiv die TLS-Verbindung terminiert und neu aufbaut. In solchen Fällen werden keine Zertifikate von Charles erstellt, da keine MITM-Interception stattfindet.
Auch Konfigurationsfehler oder Einschränkungen seitens Charles oder des Betriebssystems des Clients können dazu führen, dass Zertifikate nicht korrekt abgefangen oder angezeigt werden. Beispielsweise können spezielle Anwendungen oder Betriebssysteme Certificate Pinning einsetzen, eine Technik, die verhindert, dass fremde Zertifikate akzeptiert werden. In diesen Fällen lehnt die Anwendung die von Charles erzeugten Zertifikate ab, sodass keine vernünftige TLS-Interception möglich ist und Charles daher kein gültiges Zertifikat darstellen kann.
Zusammenfassend lässt sich sagen, dass das Auftreten von missing certificate in Charles Proxy ein Hinweis darauf ist, dass der Proxy den Zertifikatsaustausch nicht erfolgreich durchführen konnte, sei es durch technische Limitierungen des Protokolls, spezielle Sicherheitstechniken des Clients oder Fehlkonfigurationen im Proxy selbst. Um dies zu beheben, sollte sichergestellt werden, dass Charles korrekt als MITM-Proxies eingerichtet ist, das Root-Zertifikat auf dem Client installiert und vertraut wird und dass keine Mechanismen wie Certificate Pinning oder neuartige TLS-Protokolle die Interception verhindern.
