Nginx HTTPS inklusive Client Zertifikat: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (22 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
=nginx: HTTPS-VirtualHost für lila.it113.int unter Rocky Linux= | =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) | ||
| + | *cd /root | ||
| + | *wget https://xinux.de/downloads/html/webgen.sh | ||
| + | *chmod +x webgen.sh | ||
| + | |||
| + | ;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 | ||
| + | |||
| + | |||
| + | ==Wichtig== | ||
| + | Das ca.crt muss auch angegeben werden. | ||
| + | *cp ca.crt /etc/nginx/ssl | ||
| + | |||
==Konfiguration erstellen== | ==Konfiguration erstellen== | ||
| − | |||
| − | |||
*vi /etc/nginx/conf.d/lila.it113.int.conf | *vi /etc/nginx/conf.d/lila.it113.int.conf | ||
| Zeile 26: | Zeile 53: | ||
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 36: | Zeile 66: | ||
</pre> | </pre> | ||
| − | == | + | ===Restart=== |
| − | + | *systemctl restart nginx | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | * | ||
| − | + | =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="client113" | |
| − | ;Erstelle den privaten Schlüssel und die CSR für den Client | + | *cd ~ |
| − | *openssl req -new -nodes -newkey rsa:2048 -keyout | + | *openssl req -new -nodes -newkey rsa:2048 -keyout $CN.key -out $CN.csr -subj "/CN=$CN" |
==Signierung der CSR== | ==Signierung der CSR== | ||
| + | *CSR ZUR CA schicken und signieren lassen. | ||
| + | ;Erhalt von client.crt | ||
| − | + | ==Zertifikat auf dem Client installieren== | |
| + | ===Test mit Curl=== | ||
| + | ;Kein Erfolg | ||
| + | *curl https://lila.it113.int | ||
| + | <pre> | ||
| + | <html> | ||
| + | <head><title>400 No required SSL certificate was sent</title></head> | ||
| + | <body> | ||
| + | <center><h1>400 Bad Request</h1></center> | ||
| + | <center>No required SSL certificate was sent</center> | ||
| + | <hr><center>nginx/1.20.1</center> | ||
| + | </body> | ||
| + | </html> | ||
| + | </pre> | ||
| + | ;Erfolg | ||
| + | *curl --cert client.crt --key client.key https://lila.it113.int | ||
| + | <html lang="de"> | ||
| + | <head> | ||
| + | <meta charset="UTF-8"> | ||
| + | <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||
| + | <title>Willkommen bei lila</title> | ||
| + | .... | ||
| + | ===Test mit Firefox=== | ||
| + | [[Datei:Client-cert.png]] | ||
| − | + | ==P12 basteln== | |
| − | * | + | *openssl pkcs12 -export -in client113.crt -inkey client113.key -out client113.p12 |
| − | + | ==Importieren== | |
| − | * | + | *Settings |
| − | + | **Certificate Manager | |
| − | == | + | ***Your Certificates |
| − | + | ****Import | |
| − | + | ***** client.p12 | |
| − | + | ===Test mit Firefox=== | |
| − | + | [[Datei:Client-cert1.png]] | |
| − | |||
Aktuelle Version vom 27. März 2025, 11:20 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)
- cd /root
- wget https://xinux.de/downloads/html/webgen.sh
- chmod +x webgen.sh
- 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
Wichtig
Das ca.crt muss auch angegeben werden.
- cp ca.crt /etc/nginx/ssl
Konfiguration erstellen
- 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;
}
}
Restart
- systemctl restart nginx
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="client113"
- 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
Test mit Curl
- Kein Erfolg
<html> <head><title>400 No required SSL certificate was sent</title></head> <body> <center><h1>400 Bad Request</h1></center> <center>No required SSL certificate was sent</center> <hr><center>nginx/1.20.1</center> </body> </html>
- Erfolg
- curl --cert client.crt --key client.key https://lila.it113.int
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Willkommen bei lila</title>
....
Test mit Firefox
P12 basteln
- openssl pkcs12 -export -in client113.crt -inkey client113.key -out client113.p12
Importieren
- Settings
- Certificate Manager
- Your Certificates
- Import
- client.p12
- Import
- Your Certificates
- Certificate Manager

