OpenSSL ist die wichtigste Kommandozeilen-Werkzeugsammlung für Transport Layer Security (TLS). Mit ihr erzeugt man Schlüsselpaare und Zertifikate, prüft Zertifikatsdateien und testet TLS-Verbindungen zu Servern. Die Bibliothek steckt praktisch überall: im Apache- und Nginx-Webserver, in OpenSSH, in Python und in zahllosen VPN- und Mail-Programmen.
Schlüsselpaar und Zertifikat erzeugen
Ein selbstsigniertes Zertifikat mit neuem Schlüssel entsteht in einem Schritt:
openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365 -subj "/CN=example.de"
Dabei steht -nodes für "no DES" und lässt den privaten Schlüssel unverschlüsselt (nur für Testzwecke). Moderne Schlüssel erzeugt man getrennt mit openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:3072 -out key.pem; der ältere Befehl openssl genrsa -out key.pem 2048 funktioniert weiterhin. Einen Certificate Signing Request (CSR) für eine echte Zertifizierungsstelle stellt man mit openssl req -new -key key.pem -out request.csr aus.
Zertifikate prüfen
openssl x509 -in cert.pem -text -noout
openssl x509 -in cert.pem -dates -subject -issuer -noout
openssl verify -CAfile ca.pem server.pem
Die häufigste Fehlerquelle bei Web-Servern ist ein abgelaufenes oder unvollständiges Zertifikat — -dates zeigt Gültigkeitsbeginn und -ende, -issuer die ausstellende Stelle.
Live-TLS-Verbindung testen
openssl s_client -connect example.de:443 -servername example.de
s_client ist der klassische Weg, um zu sehen, welches Zertifikat ein Server wirklich ausliefert und welche TLS-Version ausgehandelt wird. Das -servername-Argument ist bei virtuellen Hosts Pflicht (SNI).
Dateien ver- und entschlüsseln
openssl enc -aes-256-cbc -salt -in datei.txt -out datei.enc
openssl dgst -sha256 datei.txt
enc verschlüsselt Dateien symmetrisch, dgst berechnet Prüfsummen beziehungsweise Signaturen. Seit OpenSSL 3.0 (September 2021) ist das Kommandozeilen-Verhalten strenger: Der MD5-basierte -md5-Standard von enc wurde abgeschafft, unsichere Algorithmen wie der 1024-Bit-Diffie-Hellman-Parameter werden abgelehnt.
Formate umwandeln
openssl pkcs12 -export -in cert.pem -inkey key.pem -out bundle.p12
openssl pkcs12 -in bundle.p12 -nodes -out combined.pem
Der PKCS12-Austausch (Dateiendung .p12 beziehungsweise .pfx) ist das Bindeglied zwischen OpenSSL-Welt und Java-Keystores — dort importiert man genau solche Dateien per keytool. Wer E-Mails nach dem offenen OpenPGP-Standard verschlüsselt, nutzt statt OpenSSL das Schwesterwerkzeug GPG.
Verwandte Grundlagen: Keytool-Befehle, SSL/TLS, X.509-Zertifikate.
Apache HTTP Server (auf Debian/Ubuntu apache2, auf RHEL/Fedora httpd genannt) ist der meistgenutzte Webserver im Internet. Dieser Artikel zeigt die wichtigsten Kommandos für Installation, Konfiguration, Module und den laufenden Betrieb.
Dienst steuern
Unter systemd-Linuxen startet, stoppt und lädt man den Dienst über systemctl:
sudo systemctl start apache2 # Dienst starten
sudo systemctl stop apache2 # Dienst stoppen
sudo systemctl restart apache2 # kompletter Neustart
sudo systemctl reload apache2 # Konfiguration neu laden (ohne Verbindungsabbruch)
sudo systemctl status apache2 # Status anzeigen
sudo systemctl enable apache2 # Autostart aktivieren
apache2ctl und httpd
Das Steuerprogramm apache2ctl (bzw. apachectl) ist ein Frontend zum Binärprogramm httpd und kann dessen Argumente direkt durchreichen:
sudo apache2ctl configtest # Konfigurationsdateien auf Syntax prüfen (Syntax OK)
sudo apache2ctl graceful # Konfiguration neu laden, Verbindungen bleiben bestehen
sudo apache2ctl -S # virtuelle Hosts/Konfiguration anzeigen
sudo apache2ctl -M # geladene Module auflisten
sudo apache2ctl -t -D DUMP_VHOSTS # vhosts als Dump ausgeben
Module und Seiten aktivieren (Debian/Ubuntu)
Debian-basierte Systeme verwalten Module und virtuelle Hosts über Symlinks in /etc/apache2/:
sudo a2enmod ssl # Modul aktivieren (z.B. mod_ssl)
sudo a2dismod rewrite # Modul deaktivieren
sudo a2ensite meine-seite # virtuellen Host aktivieren
sudo a2dissite 000-default # virtuellen Host deaktivieren
sudo apache2ctl configtest # nach Änderungen Syntax prüfen
sudo systemctl reload apache2
Dabei liest a2enmod den Modulnamen aus /etc/apache2/mods-available/ und legt einen Symlink in mods-enabled/ an; a2ensite macht dasselbe mit Konfigurationsdateien aus sites-available/.
Zugriffsschutz mit htpasswd
Die Basic-Authentifizierung wird mit htpasswd verwaltet. Die Datei liegt typischerweise außerhalb des DocumentRoot:
sudo htpasswd -c /etc/apache2/.htpasswd michael # neue Datei anlegen, User hinzufügen
sudo htpasswd /etc/apache2/.htpasswd thomas # weiteren User ergänzen
sudo htpasswd -D /etc/apache2/.htpasswd thomas # User löschen
Die Passwörter werden dabei standardmäßig als bcrypt-Hashes gespeichert (Apache 2.4.4+).
Wichtige Verzeichnisse
/etc/apache2/– Konfiguration inkl.apache2.conf,ports.conf,sites-available/,mods-available//var/www/– DocumentRoot der Standard-Seiten/var/log/apache2/–access.logunderror.log/usr/sbin/apache2– das eigentliche Binärprogramm (httpd)
Verwandte Grundlagen: Webserver, Nginx-Befehle, Tomcat-Befehle, Reverse-Proxy, Load-Balancer, SSL/TLS.
Nginx (ausgesprochen „Engine X“) ist ein Hochleistungs-Webserver, Reverse-Proxy und Load-Balancer. Seine Prozessarchitektur besteht aus einem Master-Prozess und mehreren Worker-Prozessen. Dieser Artikel erklärt die wichtigsten Befehle und Signale für den Betrieb.
Konfiguration testen
Vor jedem Reload sollte die Konfiguration geprüft werden – Nginx selbst bietet dafür den -t-Schalter:
sudo nginx -t # Konfiguration testen (syntax is ok)
sudo nginx -T # komplett aufgelöste Konfiguration ausgeben
sudo nginx -t -c /etc/nginx/nginx.conf # alternative Konfigurationsdatei testen
Dienst mit systemctl steuern
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl reload nginx # Konfiguration neu laden, kein Ausfall
sudo systemctl status nginx
sudo systemctl enable nginx # Autostart
Signale an den Master-Prozess
Alternativ lässt sich der Master-Prozess direkt per Signal steuern – das Kommando nginx -s ist der sichere Weg, da es die PID-Datei selbst findet:
sudo nginx -s reload # Konfiguration neu laden (entspricht HUP)
sudo nginx -s reopen # Logdateien neu öffnen (entspricht USR1, nach logrotate)
sudo nginx -s quit # graceful shutdown (entspricht QUIT, offene Verbindungen enden)
sudo nginx -s stop # sofortiger Stopp (entspricht TERM)
Weitere Signale: USR2 startet einen neuen Master-Prozess für binäre Upgrades, WINCH beendet die alten Worker-Prozesse kontrolliert.
Verzeichnisstruktur
/etc/nginx/– Hauptkonfigurationnginx.conf, dazusites-available/,sites-enabled/,conf.d/,modules-enabled//etc/nginx/sites-enabled/– aktivierte Server-Blöcke (meist Symlinks)/var/www/html/– Standard-DocumentRoot auf Debian/Ubuntu/var/log/nginx/–access.logunderror.log
Ein Server-Block (Virtual Host) liegt in /etc/nginx/sites-available/beispiel.de und wird über einen Symlink in sites-enabled/ aktiviert. Nach jeder Änderung gilt: erst nginx -t, dann systemctl reload nginx.
Verwandte Grundlagen: Webserver, Apache-Befehle, Tomcat-Befehle, Reverse-Proxy, Load-Balancer, TLS 1.3.
Apache Tomcat ist eine Open-Source-Implementierung der Jakarta-Servlet-Spezifikation und der meistgenutzte Container für Java-Webanwendungen. Tomcat wird über Skripte im bin/-Verzeichnis oder systemd gesteuert; die Umgebungsvariablen CATALINA_HOME (Installation) und CATALINA_BASE (Instanz) bestimmen den Betrieb.
Start und Stopp
$CATALINA_HOME/bin/startup.sh # Tomcat im Hintergrund starten
$CATALINA_HOME/bin/shutdown.sh # Tomcat kontrolliert stoppen
$CATALINA_HOME/bin/catalina.sh run # im Vordergrund starten (für Debug/Container)
Unter Windows heißen die Skripte startup.bat und shutdown.bat. Als systemd-Dienst (z.B. tomcat9 unter Debian/Ubuntu) gilt:
sudo systemctl start tomcat9
sudo systemctl stop tomcat9
sudo systemctl restart tomcat9
sudo systemctl status tomcat9
catalina.sh im Detail
Das zentrale Steuerskript catalina.sh kennt weitere Aktionen:
catalina.sh start # wie startup.sh
catalina.sh run # Vordergrund (Logs direkt auf der Konsole)
catalina.sh stop # wie shutdown.sh
catalina.sh stop -force # hart stoppen (kill -9) bei Timeout
catalina.sh configtest # server.xml auf Syntax prüfen (Exit-Code beachten)
catalina.sh version # Versionsnummern anzeigen
catalina.sh start -security # mit SecurityManager starten (Java 17+ entfernt)
Die Java-Optionen lassen sich über die Umgebungsvariable JAVA_OPTS setzen, z.B. für den Heap:
export JAVA_OPTS="-Xms512m -Xmx1024m"
$CATALINA_HOME/bin/startup.sh
Wichtige Verzeichnisse
conf/–server.xml(Ports, Hosts, Connectors),web.xml,context.xml,tomcat-users.xmlwebapps/– deployte Webanwendungen (WAR-Dateien werden hier abgelegt und automatisch deployed)logs/–catalina.out,localhost.log,access_logbin/– Start-/Stoppskripte undtomcat-juli.jarlib/– gemeinsame Bibliotheken für alle Anwendungen
Manager- und Deploy-Befehle
Die Manager-Web-App erlaubt das Deployment per HTTP (PUT einer WAR-Datei auf /manager/text/deploy?path=/meine-app) oder per Kommandozeile mit curl:
curl -u tomcat:geheim http://localhost:8080/manager/text/list
curl -u tomcat:geheim -T meine-app.war "http://localhost:8080/manager/text/deploy?path=/meine-app"
curl -u tomcat:geheim "http://localhost:8080/manager/text/undeploy?path=/meine-app"
Der Standard-Port ist 8080 (HTTP) und 8005 (Shutdown); der Zugriff auf die Manager-App erfordert in tomcat-users.xml hinterlegte Rollen wie manager-gui.
Verwandte Grundlagen: Java-Befehle, Apache-Befehle, Nginx-Befehle, Webserver, Reverse-Proxy.
Gobo Eiffel ist eine Sammlung freier, portabler Eiffel-Werkzeuge und Bibliotheken. Das Projekt stellt der Eiffel-Community Tools bereit, die über verschiedene Eiffel-Compiler hinweg lauffähig sind — die Bibliotheken und Programme lassen sich dadurch unabhängig vom verwendeten Compiler einsetzen.
Die wichtigsten Werkzeuge
- geant — XML-basiertes Build-Werkzeug nach Art von Apache Ant; führt deklarative Build-Skripte aus und ersetzt ein Make für Eiffel-Projekte.
- gec — der Gobo Eiffel Compiler, ein Open-Source-Kommandozeilen-Compiler; er übersetzt über ein C-Backend, wahlweise auch mit einer Zig-Toolchain.
- gelex — Lexer-Generator nach dem Vorbild von Lex; erzeugt Scanner aus lexikalischen Spezifikationen.
- geyacc — Parser-Generator nach dem Vorbild von Yacc; erzeugt LALR-Parser aus Grammatikdateien.
- gepp — Preprozessor, ein Filterprogramm, das Preprocessing-Anweisungen in Textdateien interpretiert (selbst mit gelex und geyacc in Eiffel geschrieben).
- getest — Werkzeug zum Ausführen von Test-Suites.
- gelint — Linter zur statischen Prüfung von Eiffel-Quelltext.
- gexslt — Kommandozeilen-Prozessor für XSLT-Transformationen (XSLT 2.0).
Arbeiten mit Gobo
Die Binaries liegen nach der Installation im Verzeichnis $GOBO/bin, das in den PATH aufgenommen wird. Die Bibliotheken umfassen unter anderem die Gobo Eiffel Tools Library, einen XML-Parser, eine XSLT-2.0-Implementierung sowie Regex-, Datums- und Zeit-Bausteine.
export GOBO=/opt/gobo
export PATH=$GOBO/bin:$PATH
geant # Build-Skript (XML) ausführen
gec --help # Compiler-Hilfe
gelex date_scan.l
geyacc grammar.y
Verwandte Grundlagen: Eiffel-Befehle, EiffelStudio-Befehle, Liberty-Eiffel-Befehle.