Digitale Signaturen

6 Kernkonzepte
Die wichtigsten Konzepte für digitale Signaturen und PKI: Signieren · Verifizieren · PKI · X.509 · Zertifikate · OpenSSL Digitale Signaturen gewährleisten Authentizität, Integrität und Verbindlichkeit von digitalen Dokumenten. Sie sind die Grundlage für sichere Kommunikation, Software-Verteilung und elektronische Verträge.

Signieren – Dokumente signieren

openssl dgst -sign privkey.pem -out signatur.sig datei.txt
openssl dgst -sha256 -sign private.pem -out signatur.sig datei.txt

Signieren erzeugt eine digitale Signatur für eine Datei oder Nachricht. Der private Schlüssel des Senders wird verwendet, um einen Hash-Wert zu verschlüsseln.

Signatur-Algorithmen

Algorithmus Beschreibung Empfehlung
RSA Klassischer asymmetrischer Algorithmus Weit verbreitet, sicher mit ≥ 2048 Bit
ECDSA Elliptic Curve Digital Signature Algorithm Kleinere Schlüssel, schnellere Signatur
EdDSA Modernes Verfahren (Ed25519) Hohe Sicherheit, empfohlen
DSA Digital Signature Algorithm (veraltet) Nicht mehr empfohlen
Beispiele (OpenSSL)
# RSA-Schlüsselpaar generieren
openssl genrsa -out private.pem 2048
openssl rsa -in private.pem -pubout -out public.pem
# Datei mit SHA-256 signieren (RSA)
openssl dgst -sha256 -sign private.pem -out signatur.sig datei.txt
# ECDSA-Schlüssel generieren (P-256)
openssl ecparam -name prime256v1 -genkey -out private_ec.pem
openssl ec -in private_ec.pem -pubout -out public_ec.pem
# ECDSA-Signatur
openssl dgst -sha256 -sign private_ec.pem -out signatur_ec.sig datei.txt
Tipp: Für moderne Anwendungen verwenden Sie Ed25519 (OpenSSL 3.0+) oder ECDSA mit P-256. RSA mit 2048 Bit ist ebenfalls sicher, aber langsamer.

Verifizieren – Signaturen prüfen

openssl dgst -verify public.pem -signature signatur.sig datei.txt
openssl dgst -sha256 -verify public.pem -signature signatur.sig datei.txt

Verifizieren prüft, ob eine digitale Signatur gültig ist – d.h. ob die Datei nicht verändert wurde und der private Schlüssel des Senders verwendet wurde.

Beispiele (OpenSSL)
# RSA-Signatur verifizieren
openssl dgst -sha256 -verify public.pem -signature signatur.sig datei.txt
# ECDSA-Signatur verifizieren
openssl dgst -sha256 -verify public_ec.pem -signature signatur_ec.sig datei.txt
# Mit Error-Handling (Exit-Code prüfen)
if [ $? -eq 0 ]; then
echo "Signatur gültig ✓"
else
echo "Signatur ungültig ✗"
fi
Erwartete Ausgabe:
Verified OK (bei gültiger Signatur)
Verification Failure (bei ungültiger Signatur)
Tipp: Verwenden Sie den Exit-Code von OpenSSL in Skripten: 0 bedeutet gültige Signatur, 1 bedeutet ungültig.

PKI – Public Key Infrastructure

CA · Zertifikat · CRL · OCSP
// PKI-Komponenten CA (Certificate Authority)Zertifikate ausstellen RA (Registration Authority)Identität prüfen CRL (Certificate Revocation List)Sperrliste OCSP (Online Certificate Status Protocol)Online-Sperrprüfung

PKI (Public Key Infrastructure) ist das Framework für die Verwaltung von digitalen Zertifikaten und öffentlichen Schlüsseln. Sie stellt die Vertrauensbasis für digitale Signaturen dar.

PKI-Komponenten

Komponente Beschreibung Beispiel
CA (Certificate Authority) Stellt Zertifikate aus und signiert sie DigiCert, Let's Encrypt, eigene CA
Zertifikat Enthält öffentlichen Schlüssel + Metadaten X.509-Zertifikat (.crt, .pem)
CRL Liste gesperrter Zertifikate crl.pem (regelmäßig aktualisiert)
OCSP Online-Abfrage des Zertifikatsstatus http://ocsp.example.com
Trust Store Vertrauenswürdige Stammzertifikate /etc/ssl/certs/ (Linux)
Zertifikatskette anzeigen
# Zertifikatsdetails anzeigen
openssl x509 -in cert.pem -text -noout
# Vertrauenskette prüfen
openssl verify -CAfile ca.pem user.crt
# CRL anzeigen
openssl crl -in crl.pem -text -noout
Tipp: Für interne Anwendungen können Sie eine eigene CA erstellen. Let's Encrypt bietet kostenlose, automatisch erneuerte Zertifikate für öffentliche Webserver.

X.509 Zertifikate – Struktur und Felder

Subject · Issuer · Validity · SAN
// X.509 Zertifikat (vereinfacht) Subject: CN=example.com, O=Company Issuer: CN=DigiCert, O=DigiCert Inc Validity: notBefore: 2025-01-01, notAfter: 2026-01-01 Public Key: RSA 2048 Bit Signature: SHA-256 with RSA

X.509 ist der internationale Standard für digitale Zertifikate. Er definiert das Format und die Felder, die ein Zertifikat enthalten muss.

Wichtige X.509-Felder

Feld Beschreibung Beispiel
Version X.509-Version (v1, v2, v3) v3 (Standard)
Serial Number Eindeutige Seriennummer 01:23:45:67:89:AB
Subject Besitzer des Zertifikats (DN) CN=example.com, O=Company
Issuer Aussteller (CA) CN=DigiCert, O=DigiCert
Validity Gültigkeitszeitraum notBefore, notAfter
Subject Public Key Öffentlicher Schlüssel RSA 2048, ECDSA P-256
Signature Signaturalgorithmus sha256WithRSAEncryption
X.509v3 Extensions Erweiterungen (SAN, Key Usage) Subject Alternative Name
OpenSSL Befehle
# Zertifikat anzeigen
openssl x509 -in cert.pem -text -noout
# Nur Subject anzeigen
openssl x509 -in cert.pem -subject -noout
# Nur Gültigkeitsdauer anzeigen
openssl x509 -in cert.pem -dates -noout
# SAN (Subject Alternative Name) anzeigen
openssl x509 -in cert.pem -ext subjectAltName -noout
Tipp: Subject Alternative Name (SAN) ist heute Pflicht für SSL/TLS-Zertifikate. Der Common Name (CN) wird nur noch als Fallback verwendet.

OpenSSL Praxis – Schlüssel & Zertifikate verwalten

genrsa · req · x509 · ca
openssl req -new -key private.pem -out request.csr openssl x509 -req -in request.csr -CA ca.pem -CAkey ca.pem -out cert.pem

OpenSSL bietet alle Werkzeuge für die Verwaltung von Schlüsseln, Zertifikaten und Signaturen – von der Schlüsselgenerierung bis zur eigenen CA.

Vollständiger Workflow
# 1. Private Schlüssel erstellen
openssl genrsa -out private.pem 2048
# 2. Öffentlichen Schlüssel extrahieren
openssl rsa -in private.pem -pubout -out public.pem
# 3. Certificate Signing Request (CSR) erstellen
openssl req -new -key private.pem -out request.csr
# 4. Selbst-signiertes Zertifikat erstellen
openssl x509 -req -in request.csr -signkey private.pem -out cert.pem -days 365
# 5. Zertifikat prüfen
openssl verify -CAfile cert.pem cert.pem
# 6. Datei signieren
openssl dgst -sha256 -sign private.pem -out signatur.sig datei.txt
# 7. Signatur verifizieren
openssl dgst -sha256 -verify public.pem -signature signatur.sig datei.txt
Tipp: Für eine eigene CA erstellen Sie zuerst ein CA-Zertifikat und signieren damit dann die CSR. So können Sie Zertifikate für interne Anwendungen ausstellen.

Zertifikatswartung – Prüfen & Erneuern

x509 · checkend · renew
openssl x509 -in cert.pem -checkend 86400 -noout # Prüft, ob das Zertifikat in 24 Stunden noch gültig ist

Zertifikatswartung umfasst die regelmäßige Prüfung der Gültigkeit, die Erneuerung vor Ablauf und das Sperren von kompromittierten Zertifikaten.

Wartungsbefehle
# Gültigkeitsdauer prüfen
openssl x509 -in cert.pem -dates -noout
# Prüfen ob Zertifikat in 30 Tagen noch gültig ist
openssl x509 -in cert.pem -checkend 2592000 && echo "Gültig" || echo "Läuft bald ab"
# Zertifikat erneuern (CSR wiederverwenden)
openssl x509 -req -in request.csr -signkey private.pem -out new_cert.pem -days 365
# Ablauf der Zertifikatskette prüfen
openssl verify -check_ss_sig -CAfile ca.pem user.crt
Tipp: Richten Sie eine automatische Erinnerung für Zertifikatsabläufe ein (z.B. mit checkend in Cron-Jobs). Let's Encrypt-Zertifikate haben eine Laufzeit von 90 Tagen – regelmäßige Erneuerung ist essenziell.

Digitale Signaturen im Überblick

Signatur Hash + privater Schlüssel
Authentizität, Integrität
Verifikation Hash + öffentlicher Schlüssel
Prüfung der Gültigkeit
PKI Trust-Infrastruktur
CA, Zertifikate, CRL
X.509 Zertifikatsformat
Subject, Issuer, Validity
SAN Subject Alternative Name
Moderner Zertifikatsstandard
OCSP Online-Zertifikatsstatus
Sperrprüfung in Echtzeit

Quick Summary

openssl dgst -sign
Signieren
openssl dgst -verify
Verifizieren
PKI
Trust-Infrastruktur
X.509
Zertifikatsstandard
openssl
Kommandozeile
checkend
Ablauf prüfen
openssl dgst -sha256 -sign private.pem -out sig.sig datei.txt · openssl dgst -sha256 -verify public.pem -signature sig.sig datei.txt