18. Quick Reference – Kryptografie-Befehle

Diese Seite ist euer Nachschlagewerk für den Berufsalltag. Alle wichtigen Befehle aus der Schulung – kompakt, ohne Erklärungen, zum schnellen Nachsehen. Für die Hintergründe verweist jeder Abschnitt auf den entsprechenden Block.


OpenSSL – Symmetrische Verschlüsselung (Block 02)

# Datei verschlüsseln (Passwort-Eingabe interaktiv)
openssl enc -aes-256-cbc -in datei.txt -out datei.enc -pbkdf2

# Datei entschlüsseln
openssl enc -d -aes-256-cbc -in datei.enc -out datei.txt -pbkdf2

OpenSSL – Hashing (Block 01)

# SHA-256 Hash einer Datei
openssl dgst -sha256 datei.txt

# SHA-256 Hash eines Strings
echo -n "Text" | openssl dgst -sha256

# SHA-512
openssl dgst -sha512 datei.txt

# MD5 (nur Legacy – nicht für Sicherheitszwecke!)
openssl dgst -md5 datei.txt

OpenSSL – Asymmetrische Schlüssel (Block 03)

# RSA Private Key generieren (4096 Bit)
openssl genrsa -out private.pem 4096

# Public Key aus Private Key ableiten
openssl rsa -in private.pem -pubout -out public.pem

# Schlüsseldetails anzeigen
openssl rsa -in private.pem -text -noout

# Ed25519 Private Key generieren (moderner, schneller)
openssl genpkey -algorithm Ed25519 -out private_ed25519.pem
openssl pkey -in private_ed25519.pem -pubout -out public_ed25519.pem

OpenSSL – Digitale Signaturen (Block 04)

# Datei signieren (erzeugt Binär-Signatur)
openssl dgst -sha256 -sign private.pem -out signatur.bin datei.txt

# Signatur verifizieren
openssl dgst -sha256 -verify public.pem -signature signatur.bin datei.txt
# Ausgabe: "Verified OK" oder "Verification Failure"

OpenSSL – Zertifikate (Block 06)

# Self-Signed Zertifikat erstellen (Key + Zertifikat in einem Schritt)
openssl req -x509 -newkey rsa:4096 -keyout server.key -out server.crt \
    -days 365 -noenc \
    -subj "/C=DE/ST=Bayern/L=München/O=TechWerk GmbH/CN=server.intern"

# CSR (Certificate Signing Request) erstellen
openssl req -new -key server.key -out server.csr \
    -subj "/C=DE/O=TechWerk GmbH/CN=www.techwerk.de"

# CSR mit eigener CA signieren
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key \
    -CAcreateserial -out server.crt -days 365 -sha256

# Zertifikat anzeigen
openssl x509 -in server.crt -text -noout

# Ablaufdaten anzeigen
openssl x509 -in server.crt -dates -noout

# Fingerprint anzeigen
openssl x509 -in server.crt -fingerprint -sha256 -noout

# Zertifikat gegen CA prüfen
openssl verify -CAfile ca.crt server.crt

# Prüfen ob Private Key zu Zertifikat passt (gleicher Modulus = Treffer)
openssl rsa -in server.key -modulus -noout | md5sum
openssl x509 -in server.crt -modulus -noout | md5sum

OpenSSL – Formatkonvertierung (Block 06)

# PEM → DER (binär)
openssl x509 -in server.crt -outform DER -out server.der

# DER → PEM
openssl x509 -in server.der -inform DER -out server.crt

# PEM → PKCS#12 (.p12 / .pfx – für Windows / Browser-Import)
openssl pkcs12 -export -in server.crt -inkey server.key -out bundle.p12

# PKCS#12 → PEM
openssl pkcs12 -in bundle.p12 -out bundle.pem -noenc

OpenSSL – TLS-Verbindungen prüfen (Block 08, 16)

# TLS-Verbindung herstellen und Details anzeigen
openssl s_client -connect domain.com:443

# Nur Zertifikatsinformationen
openssl s_client -connect domain.com:443 </dev/null 2>/dev/null | \
    openssl x509 -text -noout

# TLS-Version und Cipher Suite anzeigen
openssl s_client -connect domain.com:443 </dev/null 2>/dev/null | \
    grep -E "Protocol|Cipher"

# Bestimmte TLS-Version erzwingen
openssl s_client -connect domain.com:443 -tls1_2
openssl s_client -connect domain.com:443 -tls1_3

# Zertifikatskette anzeigen
openssl s_client -connect domain.com:443 -showcerts </dev/null 2>/dev/null | \
    grep -E "s:|i:"

SSH – Schlüsselverwaltung (Block 10)

# Ed25519-Schlüsselpaar generieren (empfohlen)
ssh-keygen -t ed25519 -C "name@domain.de"

# RSA-Schlüsselpaar (4096 Bit, Fallback für ältere Systeme)
ssh-keygen -t rsa -b 4096 -C "name@domain.de"

# Public Key auf Server übertragen
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server

# Schlüssel-Fingerprint anzeigen
ssh-keygen -l -f ~/.ssh/id_ed25519.pub

# Passwort eines bestehenden Keys ändern
ssh-keygen -p -f ~/.ssh/id_ed25519

# Berechtigungen korrekt setzen
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub

SSH – Verbindung & Troubleshooting (Block 10, 16)

# Verbinden mit spezifischem Schlüssel
ssh -i ~/.ssh/id_ed25519 user@server

# Verbose-Ausgabe (für Fehlersuche)
ssh -v user@server      # einfach
ssh -vv user@server     # mehr Details
ssh -vvv user@server    # maximale Details

# Eintrag aus known_hosts entfernen (nach Serverwechsel / Neuinstallation)
ssh-keygen -R server.intern

# Host-Key-Fingerprint vorab prüfen
ssh-keyscan server.intern 2>/dev/null | ssh-keygen -lf -

SSH – Server / sshd (Block 10)

# Konfiguration auf Syntaxfehler prüfen (vor dem Neustart!)
sudo sshd -t

# Aktive Konfiguration anzeigen
sudo sshd -T | grep -E "passwordauthentication|permitrootlogin|port"

# Dienst neu starten
sudo systemctl restart sshd

# Status prüfen
sudo systemctl status sshd

# Log in Echtzeit verfolgen
sudo journalctl -u sshd -f

Wichtigste sshd_config-Einstellungen:

PasswordAuthentication no
PermitRootLogin no
AllowUsers max admin
MaxAuthTries 3
ClientAliveInterval 300

GPG – E-Mail-Verschlüsselung / PGP (Block 13)

# Schlüsselpaar generieren
gpg --gen-key
# oder (mit erweiterten Optionen)
gpg --full-generate-key

# Vorhandene Schlüssel anzeigen
gpg --list-keys           # Public Keys
gpg --list-secret-keys    # Private Keys

# Public Key exportieren (zum Versenden / Hochladen)
gpg --export --armor name@domain.de > public_key.asc

# Fremden Public Key importieren
gpg --import empfaenger_public.asc

# Datei verschlüsseln (für Empfänger)
gpg --encrypt --recipient empfaenger@domain.de datei.txt
# → erzeugt datei.txt.gpg

# Datei entschlüsseln
gpg --decrypt datei.txt.gpg > datei.txt

# Datei signieren
gpg --sign datei.txt            # binäre Signatur (.gpg)
gpg --clearsign datei.txt       # Klartextsignatur (.asc)

# Signatur prüfen
gpg --verify datei.txt.asc

# Schlüssel widerrufen (Widerrufszertifikat vorher erstellen!)
gpg --output widerruf.asc --gen-revoke name@domain.de
gpg --import widerruf.asc

VPN – WireGuard (Block 12)

# Interface-Status und Peer-Verbindungen anzeigen
sudo wg show

# Interface aktivieren / deaktivieren
sudo wg-quick up wg0
sudo wg-quick down wg0

# Routing-Tabelle prüfen
ip route show table main

# Netzwerkverkehr auf WireGuard-Interface beobachten
sudo tcpdump -i wg0

# WireGuard-Log
sudo journalctl -u wg-quick@wg0 -f

# Interface-Status
ip link show wg0

VPN – IPsec / strongSwan (Block 12)

# Aktive Verbindungen anzeigen
sudo ipsec status

# Detaillierte Verbindungsinfo
sudo ipsec statusall

# Verbindung manuell aufbauen
sudo ipsec up verbindungsname

# Verbindung trennen
sudo ipsec down verbindungsname

# Dienst-Log
sudo journalctl -u strongswan -f

Allgemeine Netzwerkdiagnose (Block 16)

# Erreichbarkeit prüfen
ping vpn.domain.de
traceroute vpn.domain.de

# DNS-Auflösung über spezifischen Server (z.B. VPN-DNS)
nslookup server.intern 10.0.0.1

# MTU-Probleme diagnostizieren (kein Fragmentieren, feste Paketgröße)
ping -M do -s 1400 10.0.0.1

# Alle lauschenden Ports anzeigen
sudo ss -tlnp

# Firewall-Status
sudo ufw status
sudo firewall-cmd --list-all

Vergleich auf einen Blick

VerfahrenZweckTypisch
Symmetrisch (AES)Massendaten verschlüsselnschnell, ein Schlüssel
Asymmetrisch (RSA/ECC)Schlüsselaustausch, Signaturenlangsam, Schlüsselpaar
Hybrid (TLS, GPG, SSH)Kombination aus beidemasymmetrisch für Handshake, symmetrisch für Daten
Hash (SHA-256)Integrität prüfen, Passwörter speichernEinwegfunktion, nicht umkehrbar
Salt + Hash (bcrypt/Argon2)Passwörter sicher speichernRainbow Tables verhindern
KDF (PBKDF2/Argon2)Passwort → kryptografischer SchlüsselBrute-Force erschweren

Referenzen

  • man openssl, man openssl-enc, man openssl-req, man openssl-x509
  • man ssh, man ssh-keygen, man sshd_config
  • man gpg, man wg, man wg-quick
  • BSI TR-02102: https://www.bsi.bund.de (Technische Richtlinien → Kryptographische Verfahren)
  • OpenSSL Docs: https://www.openssl.org/docs/