Zertifikat-Logs durchsuchen

Jedes Mal, wenn ein Zertifikat für einen Ihrer Hostnamen ausgestellt wird, landet es in einem öffentlichen Register, das jeder lesen kann. Diese Suche liest das Register für eine Domain, listet die Namen auf, die es preisgibt, und prüft die neuesten davon im DNS.

Oder probieren Sie wordpress.org, python.org

Ein Register, das jeder lesen kann

Ein TLS-Zertifikat wird von einer Zertifizierungsstelle (CA) ausgestellt, und ein Browser vertraut jedem Zertifikat, das eine der rund hundert Stellen auf seiner Liste signiert hat. Jahrelang hieß das: Eine einzige nachlässige oder kompromittierte Stelle konnte ein gültiges Zertifikat für die Domain Ihrer Bank ausstellen, ohne dass es jemand bemerkte.

Certificate Transparency (CT) schließt diese Lücke. Zertifizierungsstellen müssen jedes Zertifikat in öffentliche Logs einreichen, die nur Ergänzungen zulassen, und seit April 2018 lehnt Chrome Zertifikate ohne Nachweis der Protokollierung ab. Safari wendet dieselbe Regel an. Die Logs werden von Firmen wie Google, Cloudflare, DigiCert, Sectigo und Let’s Encrypt betrieben, und jeder kann sie durchsuchen.

Für Sie hat das zwei Seiten. Sie sehen jedes Zertifikat, das je für Ihre Domain ausgestellt wurde, auch die, die Sie nie beantragt haben. Alle anderen sehen das aber auch, samt jedem Hostnamen, der in diesen Zertifikaten steht.

Was die Suche mit dem Log macht

Wir fragen crt.sh ab, einen öffentlichen Index der CT-Logs, für die registrierte Domain und alles darunter. Die Ergebnisse werden eine Stunde lang aufbewahrt. Dann gehen wir sie so durch:

  • Zertifikate werden einmal gezählt. Jede Ausstellung erscheint zweimal in den Logs, als Pre-Certificate und als endgültiges Zertifikat. Einträge mit demselben Aussteller und derselben Seriennummer werden zusammengeführt.
  • Subdomains werden gesammelt, aus den Namen in jedem Zertifikat, und nach dem Datum ihres neuesten Zertifikats sortiert. Wildcards wie *.example.com werden getrennt aufgeführt.
  • Die 40 neuesten Namen werden im DNS aufgelöst, um zu sehen, ob sie noch irgendwohin führen.
  • Aussteller werden gezählt, insgesamt und für die letzten 90 Tage, und mit Ihrem CAA-Eintrag verglichen, falls Sie einen veröffentlichen.

Hat eine Domain eine sehr lange Geschichte, liefert crt.sh nur einen Teil davon oder bricht mit Zeitüberschreitung ab. Die Seite sagt Ihnen, wenn das passiert, und greift auf die noch gültigen Zertifikate zurück.

Verwaiste CNAMEs und Subdomain-Übernahme

Angenommen, status.example.com war einmal ein CNAME auf example.herokuapp.com. Jemand hat die Anwendung gelöscht und den DNS-Eintrag vergessen. Der Alias zeigt jetzt auf einen Namen, den jeder beanspruchen kann, und wer auf derselben Plattform eine Anwendung mit diesem Namen anlegt, bekommt den Datenverkehr Ihrer Subdomain. Von dort aus kann er unter Ihrer Domain eine Login-Seite ausliefern und ein gültiges Zertifikat dafür bekommen.

Die Statusspalte zeigt, was das DNS heute sagt.

Wird aufgelöst
Der Name hat eine Adresse. Nichts zu tun.
Ziel verschwunden (rot)
Ein CNAME auf eine Plattform, die bekanntermaßen die Wiederverwendung aufgegebener Namen erlaubt, etwa GitHub Pages, Heroku, Azure, Amazon S3, Netlify oder Shopify, und das Ziel liefert NXDOMAIN. Behandeln Sie das als dringend.
Ziel verschwunden (gelb)
Dieselbe Situation bei einem Dienst, den wir nicht kennen.
Verschwunden / Keine Adresse
Die Subdomain selbst existiert nicht mehr. Das ist harmlos, auch wenn ihr Name in den Logs bleibt.

Die Reparatur ist ein Schritt. Löschen Sie den CNAME-Eintrag, oder legen Sie die Ressource auf der Plattform neu an, wenn Sie die Subdomain noch brauchen. Und machen Sie künftig „DNS-Eintrag entfernen“ zum festen Teil jeder Abschaltung eines gehosteten Dienstes.

Die Aussteller-Tabelle lesen

Die meisten Domains zeigen eine oder zwei Stellen. Let’s Encrypt und Google Trust Services tauchen oft auf, weil Hoster und CDNs dort automatisch Zertifikate anfordern. Ein Aussteller wird in zwei Fällen als Ungewöhnlich markiert. Entweder hat er in den letzten 90 Tagen ausgestellt und fehlt in Ihrem CAA-Eintrag, oder Sie haben keinen CAA-Eintrag und er steht für höchstens zwei Zertifikate bei einer Domain, die zehn oder mehr hat.

Ungewöhnlich heißt nicht feindlich. Ein eingeschaltetes CDN, ein Website-Baukasten oder ein neues Landingpage-Tool bringt oft eine neue Stelle mit. Fragen Sie, wer diese Dienste verwaltet. Kann niemand das Zertifikat erklären, suchen Sie seine Seriennummer über den crt.sh-Link in der letzten Tabelle und bitten Sie die Stelle, es zu widerrufen.

Um künftig einzuschränken, wer ausstellen darf, veröffentlichen Sie CAA-Einträge, die nur die Stellen nennen, die Sie nutzen:

example.com.  CAA  0 issue "letsencrypt.org"
example.com.  CAA  0 issue "pki.goog"

Nur 40 Namen werden geprüft, und nur auf ein fehlendes CNAME-Ziel. Manche Plattformen lassen sich übernehmen, auch wenn das Ziel noch antwortet, und Hostnamen, die von einer Wildcard abgedeckt sind, erscheinen nie in den Logs. Ein sauberes Ergebnis hier ist kein vollständiges Audit Ihrer DNS-Zone.

Häufige Fragen

Kann ich eine Subdomain aus den Certificate-Transparency-Logs entfernen?

Nein. Die Logs nehmen nur Ergänzungen an und sind so gebaut, dass eine Löschung auffallen würde. Gehen Sie davon aus, dass jeder Hostname, den Sie in ein öffentliches Zertifikat schreiben, für immer öffentlich ist.

Wie finde ich alle Subdomains einer Domain?

CT-Logs sind die vollständigste öffentliche Quelle, weil fast jeder HTTPS-Hostname irgendwann ein Zertifikat hatte. Es fehlen Namen, die immer nur ein Wildcard-Zertifikat verwendet haben, und Namen, die nie über HTTPS ausgeliefert wurden.

Warum gibt es Hunderte Zertifikate für meine Domain?

Automatische Zertifikate gelten 90 Tage oder weniger und werden etwa alle 60 Tage erneuert, pro Hostname, und ein CDN vor der Website stellt zusätzlich eigene aus. Eine Website mit fünf Hostnamen kann über dreißig Zertifikate im Jahr erzeugen.

Wie halte ich interne Hostnamen aus den Logs heraus?

Verwenden Sie ein Wildcard-Zertifikat, das nur *.example.com protokolliert, oder stellen Sie interne Zertifikate über eine private Zertifizierungsstelle aus, der Ihre eigenen Geräte vertrauen. Vermeiden Sie in öffentlichen Zertifikaten sprechende Namen wie vpn-admin oder den Namen eines Produkts, das Sie noch nicht veröffentlicht haben.

Heißt ein Zertifikat in den Logs, dass die Website online ist?

Nein. Es heißt, dass jemand am Tag der Ausstellung nachweisen konnte, dass er diesen Namen kontrolliert. Die DNS-Prüfung in der Subdomain-Tabelle sagt Ihnen, ob der Name noch irgendwohin führt.