Nginx Client Zertifikat

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Absicherung von Webdiensten mit 2FA: Zertifikat + Passwort

Voraussetzungen

Zertifikate
  • Eine eigene CA: ca.crt
  • Ein Server-Zertifikat: server.crt und server.key
  • Ein Client-Zertifikat: client.crt und client.key
Benutzer
  • Ein Benutzerkonto für HTTP-Basic-Auth

Benutzer anlegen

  • htpasswd -c /etc/nginx/.htpasswd xinux

NGINX-Konfiguration

server {

   listen 443 ssl;
   server_name secure.lab.intern;

   ssl_certificate /etc/nginx/ssl/server.crt;
   ssl_certificate_key /etc/nginx/ssl/server.key;

   ssl_client_certificate /etc/nginx/ssl/ca.crt;
   ssl_verify_client on;

   ssl_protocols TLSv1.2 TLSv1.3;

   location / {
       auth_basic "Login mit Benutzername und Passwort";
       auth_basic_user_file /etc/nginx/.htpasswd;
       root /var/www/html;
       index index.html;
   }

}

Zertifikat im Firefox einbinden

Import
  • Firefox → Einstellungen → Datenschutz & Sicherheit → Zertifikate anzeigen
  • Reiter "Ihre Zertifikate" → Importieren → client.p12
Verwendung

Test

Kein Zertifikat
  • Fehler 400
Falsches Passwort
  • Fehler 401
Zertifikat + Passwort korrekt
  • Zugriff erlaubt