Schlüsselverwendungszwecke aus X509 Zertifikaten im PEM Format mit Java auslesen und im Klartext ausgeben

Jedes Jahr am ersten Donnerstag im Mai ist Welt-Passwort-Tag. Er dient dazu, das Bewusstsein für die Bedeutung starker Passwörter zu schärfen. Also gestern. Dann mal heute ein kleines Javaprogramm zu Entspannung das den Verwendungszweck eine Zertifikats ausgibt. Schlüsselverwendungszwecke sind wichtig für die ordnungsgemäße Verwendung und Interpretation von Zertifikaten und spielen eine entscheidende Rolle bei der Sicherstellung der Sicherheit und Integrität von Kommunikationen und Daten. In ASN.1 („Abstract Syntax Notation One“) ist das beschrieben. ASN.1 ist eine formale Sprache zur Beschreibung von Datenstrukturen und -inhalten, die unabhängig von einer bestimmten Programmiersprache oder Hardwareplattform ist. ASN.1 wird häufig in der Telekommunikations- und Netzwerktechnik sowie in der Kryptografie verwendet.

Hier ein kleines Programm, das ein JUnit-Testzertifikat (Public, PEM Format) aus dem Dateisystem einliest, und die meisten Parameter des Zertifikats auf der Konsole ausgibt.

Bei der ASN.1 ist die Reihenfolge wichtig und vorgegeben.

Hier die Ausgabe meines Test-Zertifikats:

Wer da Zertifikate auch einlesen will, kann diesen public Key in eine Datei (junitec.pem) speichern, oder das schöne Base64-Format bewundern. Das Base64-Format verwendet einen festgelegten Zeichensatz von 64 Zeichen, bestehend aus 26 Großbuchstaben (A-Z), 26 Kleinbuchstaben (a-z), den Zahlen 0-9 und den Sonderzeichen „+“ und „/“. Das Base64 ist eine Kodierung, keine Verschlüsselung:

Oder hier mal ein altes Lets Encrpyt Zertifikat von mir, welche 3 Zerfifikate, also die ganze Zertifikatskette enthält:

Wir erhalten mit dem leicht angepassten Programm für mehrere Zertifikate:

Das liefert dann an erster Stelle mein Zertifikat, das abgelaufen ist und das Intermediate und Root Zertifikat von Let’s Encrypt das noch ein Jahr läuft:

Die verwenden also auch Elliptische-Kurven-Kryptografie.

Wenn man noch die checkValidity Methode in die Schleife einführt, bekommt man noch eine gültigkeits Check. Bei dem ersten Zertifikat gib es dann:

Certificat expired: NotAfter: Wed Dec 20 21:07:44 CET 2023

weil es abgelaufen ist.