Erweiterung des Distinguished Name für x509-Zertifikate

24.05.2021

Ich habe das Projekt zu Pflege und Management einer PKI aus beliebig vielen CAs erweitert.

Das Projekt wurde zunächst um einige kleinere Verbesserungen der Dokumentation erweitert - unter anderem betrifft das die explizite Anleitung zur Beantragung und Ausstellung von Zertifikaten für beliebig viele E-Mail-Adressen - zum Beispiel zur Verwendung von S/Mime zur vertraulichen EMail-Kommunikation:

Nutzt man diese Möglichkeit, benötigt man auch im Besitz mehrerer EMail-Adressen lediglich ein Zertifikat, da die EMail-Adressen - genau wie für Serverzertifikate, die für mehrere Hostnamen ausgestellt werden - einfach als Subject Alternative Names (SAN) angegeben werden können.

Funktional wurden die Skripte dahingehend erweitert, dass es möglich ist, die nutzerdefinierten OIDs nicht nur für custom Policies einzusetzen, sondern damit auch nutzerdefinierte Extensions und weitere Felder für den Distinguished Name (DN) zu definieren. Dazu werden bei der Erstellung einer Issuing CA entsprechende Konfigurationsdateien erstellt, die durch die End Entities zur Erzeugung des Zertifikatsrequests benutzt werden können. In diesen Dateien sind Platzhalter für sämtliche bei der Erstellung der CA definierten custom OIDs sowohl als Erweiterung des DN, als auch als custom Erweiterung enthalten. Vor Aktivierung der CA sind diese Platzhalter entsprechend zu aktivieren.

Entsprechende Platzhalter existieren ebenfalls in der Konfigurationsdatei für den Betrieb der CA - auch dort müssen die entsprechenden Änderungen - passend zu denen in den CSR-Konfigurationen - aktiviert werden. Ein entsprechender Abschnitt, der diese Änderungen demonstriert, wurde in die Dokumentation eingefügt.

Weiterhin wurde erste Tests zur Verwendung des Projektes für Cross-Zertifizierungen erfolgreich ausgeführt:

Erstellt man zwei PKI - je eine für Domain A und Domain B - wie hier dargestellt, so vertraut user1 einer EMail von user2 nicht, da dessen Zertifikat +ber keine von user1 als vertrauenswürdig eingestufte Wurzel verfügt.

Dieses Bild zeigt die Vertrauensketten, die user1 und user2 kennen - sie liegen jeweils in der eigenen Domain.

Beide könnten nun überein kommen, den Wurzelzertifikaten der jeweils anderen Domain das Vertrauen auszusprechen. Dann sind aber beide auf die Integrität und Vertrauenswürdigkeit der jeweils anderen Root CA angewiesen. Besser ist es, wenn dieses gegenseitige Vertrauen entkoppelt wird wie in der nächsten Abbildung dargestellt:

Dadurch, dass in Domain A eine CA eingerichtet wurde, die das Zertifikat der Identity CA B beglaubigt, entsteht eine Vertrauenskette, die user1 nutzen kann, um Zertifikate der Identity CA B zu prüfen - er muss dazu jetzt nicht mehr der Root CA (oder der Intermediary CA) der Domain B vertrauen. Außerdem kann ein Administrator auf einfache Art und Weise diese Kopplung wieder aufheben - er benötigt dazu nicht die Unterstützung der Administratoren aus Domain B - falls er den Verdacht hat, dass Domain B kompromittiert worden ist. Dazu muss er einfach das Zertifikat, das durch die Bridge cA für Identity CA B ausgestellt wurde widerrufen. Die untenstehende Abbildung zeigt die zwei bekannten Vertrauensketten und die durch die Bridge CA zusätzlich hinzugekommene:

Die Administration der Domain B kann sich entscheiden, dasselbe Vorgehen spiegelbildlich ebenfalls auszuführen - damit wird auch die Herkunft des Begriffes Cross Certification plausibel: Würde man diese zusätzliche Vertrauenskette ebenfalls noch in die Darstellung integrieren, würden sich die zwei kreuzen.

Artikel, die hierher verlinken

X509 Policies

07.05.2023

Ich wollte schon lange einmal etwas über einen oft missverstandenen und auch ignorierten Aspekt von (x.509) PKI schreiben: Policies

Was bedeutet das Vorhängeschloss im Browser?

12.11.2021

Ich habe immer wieder Anlauf genommen, mir das Folgende mal von der Seele zu schreiben und es immer wieder aufgeschoben - jetzt ist es aber soweit!

Datei verschlüsseln mit LUKS/dmcrypt

10.10.2021

Ich habe hier bereits öfter über die Einrichtung und Konfiguration von PKI bzw. CS gesprochen. Beides benötigt für die sensiblen Daten nicht wirklich viel Platz - allerdings wäre es schön, wenn diese Daten besonders geschützt wären...

Zertifikatsgültigkeit überwachen mit Grafana

04.10.2021

Ich habe ausprobiert, die verbleibende Lebenszeit von X.509-Zertifikaten per Telegraf, Influx und Grafana zu überwachen

Alle Artikel rss Wochenübersicht Monatsübersicht Github Repositories Gitlab Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • Fährnisse des Buildprozesses unter Windows

    17.07.2019

    Nachdem ich begonnen hatte, mich mit der Beschleunigung der Berechnung des Mandelbrot-Fraktals unter Zuhilfenahme der Shadereinheiten in Graphikkarten zu beschäftigen und erste Erfolge feiern konnte, wollte ich das mal auf einer richtigen Graphikkarte ausprobieren...

    Weiterlesen...

Neueste Artikel

  • Datenvalidierung UTF8 mit BiDi-Steuerzeichen (TrojanSource 2.0)

    Ich bin heute nochmal inspiriert worden, weiter über die Trojan Source Vulnerability nachzudenken. Meiner Meinung nach bestehen hier noch Probleme - speziell bei Nutzereingaben oder Daten, die über externe Schnittstellen ampfangen werden.

    Weiterlesen...
  • OpenStreetMap Navi als Docker-Container

    Ich habe die auf OpenStreetMap basierende OpenSource Navigationslösung Graphhopper in einen Docker-Container gepackt und als neuestes Mitglied in meinem Docker-Zoo willkommen geheißen.

    Weiterlesen...
  • SQL-Aggregatfunktionen in SQLite als BeanShell-Scripts

    Ich habe neulich über eine Möglichkeit berichtet, SQLite mittels der sQLshell und Beanshell-Skripten um SQL-Funktionen zu erweitern. In diesem Artikel versprach ich auch, über eine solche Möglichkeit für Aggregatfunktionen zu berichten.

    Weiterlesen...

Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.

Wer daran teilhaben und eventuell sogar davon profitieren möchte, muß damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.

Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...

PS: Meine öffentlichen GitHub-Repositories findet man hier - meine öffentlichen GitLab-Repositories finden sich dagegen hier.