Handbuch Technik API Admin

Netzwerk-Konfiguration

Firewall, Reverse Proxy und SSL/TLS fuer deinen PluriKey-Server. Die drei Deployment-Modi bestimmen, wer auf den Server zugreifen kann.

Deployment-Modi

ModusBindingZugriffVerwendung
local127.0.0.1:8200Nur localhostEinzelplatz, Extension auf gleichem Rechner
lan0.0.0.0:8200Lokales NetzwerkHeimnetz, mehrere Geraete
remote0.0.0.0:8200Internet (via Reverse Proxy)Ueberall erreichbar, erfordert SSL

Firewall (UFW)

# Nur LAN-Modus: Port 8200 fuer lokales Netz
sudo ufw allow from 192.168.0.0/16 to any port 8200

# Remote-Modus: HTTPS oeffentlich, PluriKey nur lokal
sudo ufw allow 443/tcp
sudo ufw deny 8200/tcp
Warnung
Im Remote-Modus NIEMALS Port 8200 direkt ins Internet freigeben. Immer einen Reverse Proxy mit SSL davor schalten!

Reverse Proxy mit nginx

Beispiel-Konfiguration fuer /etc/nginx/sites-available/plurikey:

server {
    listen 443 ssl http2;
    server_name plurikey.example.com;

    ssl_certificate     /etc/letsencrypt/live/plurikey.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/plurikey.example.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:8200;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

SSL-Zertifikat via Let's Encrypt (certbot) empfohlen. Siehe Abschnitt SSL/TLS mit Let's Encrypt weiter unten.

Reverse Proxy mit Caddy

Caddy ist eine einfachere Alternative zu nginx. Die gesamte Konfiguration in der Caddyfile:

plurikey.example.com {
    reverse_proxy localhost:8200
}
Tipp
Caddy holt und erneuert SSL-Zertifikate automatisch. Ideal fuer einfache Setups.

SSL/TLS mit Let's Encrypt

Fuer nginx-basierte Setups:

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d plurikey.example.com

Certbot richtet einen systemd Timer ein, der das Zertifikat automatisch erneuert. Zum Testen der Erneuerung:

sudo certbot renew --dry-run

DNS-Konfiguration

Erstelle folgende DNS-Eintraege bei deinem Domain-Anbieter:

TypNameWert
Aplurikey.example.comDeine-Server-IP
AAAAplurikey.example.com(optional, IPv6)

Sicherheits-Empfehlungen

  • HTTPS immer verwenden im Remote-Modus
  • HTTP Strict Transport Security (HSTS) Header setzen
  • Rate-Limiting auf API-Endpunkte (nginx limit_req)
  • fail2ban fuer SSH und nginx konfigurieren
  • PluriKey-Server als eigener Systembenutzer (nicht root!)