Zertifikate
Zertifikate sind ein elektronischer Echtheitsnachweis in der IT, ähnlich dem Personalausweis bei Menschen. Diese werden (zumindest im Internet) von einer Zertifizierungsstelle (auch Certification Authority, kurz CA) ausgestellt. Ein Zertifikat enthält u.a. den Namen des Besitzers, den Aussteller sowie die Gültigkeit.
In Kombination mit einer Public Key Infrastruktur (PKI) stehen Zertifikate für die sichere Übertragung von Daten im Internet. Das Zertifikat gewährleistet, dass der Server auch der ist, den er vorgibt zu sein. Der gängigste Standard ist X.509. Solche werden umgangssprachlich auch als SSL-Zertifikate bezeichnet.
Für Zertifikate gibt es unterschiedliche Formate, die nachfolgend kurz beschrieben sind.
PEM
PEM steht für Privacy Enhanced Mail. Der Inhalt ist Base64-enkodiert und kann neben dem eigentlichen Zertifikat auch noch Intermediate-Zertifiate, Root-CAs und private Schlüssel enthalten.
Als Dateiendung wird oft .pem, .cert, .crt, .cer oder .key verwendet.
P7B/PKCS#7
In einer Datei mit der Endung .p7b oder .p7c sind ein oder mehrere Zertifikate inkl. der Zertifikatskette Base64 enkodiert enthalten, allerdings ohne private Schlüssel.
KEY
Hierbei handelt es sich ebenfalls um das PEM-Format, allerdings ist hier nur der private Schlüssel enthalten.
PFX oder P12
Der Inhalt ist binär. Neben dem eigentlichen Zertifikat können hier noch alle anderen Zertifikate des Zertifizierungspfades enthalten sein. Der private Schlüssel ist ebenfalls enthalten. Die Dateien können passwortgeschützt gespeichert werden.
Self-Signed Zertifikate
Anders als Eingangs beschrieben, können Zertifikate auch selbst erstellt werden. Diese werden dann natürlich nicht auf einem Webserver installiert, sondern werden oft auch als Ersatz von Benutzer/Passwort verwendet. Die Standardanwendung, wenn es um das Erstellen von Zertifikaten geht, ist openssl.
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -subj '/CN=localhost'
Dieser Befehl erzeugt einen RSA Key und Zertifikat, mit einer Schlüssellänge von 4096, das 365 Tage gültig ist.
Um daraus eine .pfx-Datei zu erstellen, kann folgender Befehl aufgerufen werden:
openssl pkcs12 -export -out cert.pfx -inkey key.pem -in cert.pem
Der Inhalt der .pfx-Datei kann mit dem folgenden Befehl ausgegeben werden:
openssl pkcs12 -in cert.pfx -info
Zur Ausgabe des Thumbprint/Fingerprint wird der folgende Befehl verwendet:
openssl x509 -in cert.pem -noout -sha256 -fingerprint