Nginx HTTPS inklusive Client Zertifikat: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 50: Zeile 50:
 
     root /var/www/lila;
 
     root /var/www/lila;
 
     index index.html index.htm;
 
     index index.html index.htm;
 +
   
 +
    ssl_verify_client on;
 +
    ssl_client_certificate /etc/nginx/ssl/ca.crt;
  
 
     ssl_certificate /etc/nginx/ssl/lila.it113.int.crt;
 
     ssl_certificate /etc/nginx/ssl/lila.it113.int.crt;
Zeile 59: Zeile 62:
 
}
 
}
 
</pre>
 
</pre>
 
 
  
 
=Erstellung eines KEYS und einer  CSR auf dem Client=
 
=Erstellung eines KEYS und einer  CSR auf dem Client=

Version vom 26. März 2025, 17:46 Uhr

nginx: HTTPS-VirtualHost für lila.it113.int unter Rocky Linux

Vorbereitung der Seite

Verzeichnis für Inhalte anlegen
  • mkdir -p /var/www/lila
Script zum Erzeugen der Startseite herunterladen (außerhalb des DocumentRoot)
Startseite erzeugen
  • ./webgen.sh lila > /var/www/lila/index.html

Fehleranalyse

Falls der Zugriff auf die Seite weiterhin blockiert wird, prüfe SELinux und stelle sicher, dass der korrekte Sicherheitskontext gesetzt ist:

Kontext setzen
  • chcon -Rt httpd_sys_content_t /var/www/lila
nginx neu laden
  • systemctl reload nginx
SELinux-Probleme analysieren
  • ausearch -m avc -ts recent


Konfiguration erstellen

Die folgende Konfiguration wird als Datei gespeichert unter:

  • vi /etc/nginx/conf.d/lila.it113.int.conf
server {
    listen 80;
    listen [::]:80;

    server_name lila.it113.int;

    # HTTP auf HTTPS weiterleiten
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name lila.it113.int;

    root /var/www/lila;
    index index.html index.htm;
    
    ssl_verify_client on;
    ssl_client_certificate /etc/nginx/ssl/ca.crt;

    ssl_certificate /etc/nginx/ssl/lila.it113.int.crt;
    ssl_certificate_key /etc/nginx/ssl/lila.it113.int.key;

    location / {
        try_files $uri $uri/ =404;
    }
}

Erstellung eines KEYS und einer CSR auf dem Client

Privaten Schlüssel und CSR für den Client erstellen

Erstelle den privaten Schlüssel und die CSR für den Client
  • export CN="client"
  • cd ~
  • openssl req -new -nodes -newkey rsa:2048 -keyout $CN.key -out $CN.csr -subj "/CN=$CN"

Signierung der CSR

  • CSR ZUR CA schicken und signieren lassen.
Erhalt von client.crt

Zertifikat auf dem Client installieren

Signierung der CSR

Die CSR kann nun von einer CA signiert werden. Wenn du Let’s Encrypt oder eine interne CA verwendest, geh wie folgt vor:

Für Let’s Encrypt (mit certbot) eine Zertifikatsanforderung stellen
  • certbot certonly --nginx -d client.lila.it113.int
Alternativ, wenn du eine interne CA hast, signiere die CSR
  • openssl ca -in /etc/nginx/csr/client.lila.it113.int.csr -out /etc/nginx/ssl/client.lila.it113.int.crt

nginx neu starten

Nachdem du die Konfiguration angepasst hast, starte nginx neu, um die Änderungen zu übernehmen:

nginx neu starten
  • systemctl restart nginx