Ubuntu SAN Zertifikat anfordern mit interner Microsoft CA Zertifizierungsstelle und in Apache verwenden: Unterschied zwischen den Versionen
Aus znilwiki
BLinz (Diskussion | Beiträge) |
BLinz (Diskussion | Beiträge) |
||
| Zeile 108: | Zeile 108: | ||
[alt_names] | [alt_names] | ||
IP.1 = <span style="background:lightblue">192.168.0.96</span> | IP.1 = <span style="background:lightblue">192.168.0.96</span> | ||
DNS.1 = <span style="background: | DNS.1 = <span style="background:orange">monitoring.azulnet.net</span> | ||
DNS.2 = <span style="background: | DNS.2 = <span style="background:orange">zabbix</span> | ||
DNS.3 = <span style="background: | DNS.3 = <span style="background:orange">monitoring</span> | ||
<span style="background:yellow">Gelb</span> hinterlegt ist der primäre Name des Servers, dieser ist dann direkt beim Aufruf der Eigenschaften des Zertifikates zu sehen.<br> | <span style="background:yellow">Gelb</span> hinterlegt ist der primäre Name des Servers, dieser ist dann direkt beim Aufruf der Eigenschaften des Zertifikates zu sehen.<br> | ||
<span style="background:lightblue">Hellblau</span> ist die IP-Adresse des Systems. Kann man auch weglassen. Aber - wenn der Browser es zulässt - gibt es auch keine Warnung wenn man nur die IP-Adresse des Servers im Browser eingibt (ist eigentlich falsch, wird aber oft aktzeptiert).<br> | <span style="background:lightblue">Hellblau</span> ist die IP-Adresse des Systems. Kann man auch weglassen. Aber - wenn der Browser es zulässt - gibt es auch keine Warnung wenn man nur die IP-Adresse des Servers im Browser eingibt (ist eigentlich falsch, wird aber oft aktzeptiert).<br> | ||
<span style="background: | <span style="background:orange">Orange</span> dann alle weiteren DNS oder NetBIOS Namen auf die der Server hören soll.<br> | ||
Version vom 13. November 2025, 14:33 Uhr
Changelog:
- 13.11.2025 erste Version
Vorwort
In dieser Anleitung habe ich mir zusammengeschrieben wie
- Ich ein SAN-Zertifikat, also ein Zertifikat mit alternativen DNS-Namen, anfordere
- Es von einer internen Microsoft Zertifizierungsstelle CA ausstellen lasse
- Und es dann im Apache2 Webserver einbinde
Das ganze als Gedächtnisstütze damit ich es beim nächsten mal schneller hinbekomme.
Das ganze zeige ich hier anhand eines Zabbix-Servers der bisher nur über http erreichbar ist, zukünftig aber über https angesprochen werden soll.
Auf dem Linux-Server
Voraussetzungen
Auf meinem Ubuntu Server ist der Apache2 Webserver installiert mit mindestens folgenden Optionen sind aktiviert:
a2enmod ssl systemctl restart apache2.service
welche Module bereits aktiviert sind bekommt man mit apache2ctl -M heraus, der obige Befehl schadet aber auch nicht falls es schon aktiviert ist.
Es gibt unter Apache ab Werk 2 getrennte Dateien für Port 80 und 443:
root@zabbix:/# ll /etc/apache2/sites-available/ insgesamt 20 drwxr-xr-x 2 root root 4096 Nov 13 12:42 ./ drwxr-xr-x 8 root root 4096 Nov 13 12:32 ../ -rw-r--r-- 1 root root 1768 Jul 6 2023 000-default.conf -rw-r--r-- 1 root root 6338 Okt 10 2018 default-ssl.conf
wovon aber nur die 000-default.conf aktiviert ist, diese enthält die Port 80 (=http) Konfiguration:
root@zabbix:/# ll /etc/apache2/sites-enabled/ insgesamt 8 drwxr-xr-x 2 root root 4096 Mai 9 2019 ./ drwxr-xr-x 8 root root 4096 Nov 13 12:32 ../ lrwxrwxrwx 1 root root 35 Mai 9 2019 000-default.conf -> ../sites-available/000-default.conf
Zum Testen aktiviere ich mir die https Konfiguration - die Webseite unter Port 80 / http läuft in der Zeit normal weiter:
a2ensite default-ssl.conf systemctl reload apache2.service
Wenn ich jetzt den Server per https im Browser aufrufe, gibt es eine Zertifikatswarnung und die Default Webseite erscheint:
Zertifikatsschlüssel erstellen
Ab Werk nutzt die default-ssl.conf das folgende Zertifikat:
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
die beiden Ordner sind damit also auch die Standardordner für die Ablage.
Zuerst brauchen wir einen eigenen, privaten Schlüssel:
openssl genrsa -out /etc/ssl/private/zabbix-website.key 4096
und noch den Besitzer und die Rechte anpassen:
chown root:ssl-cert /etc/ssl/private/zabbix-website.key chmod 640 /etc/ssl/private/zabbix-website.key
so das das Verzeichnis hinter so aussieht:
root@zabbix:/# ll /etc/ssl/private/ insgesamt 16 drwx--x--- 2 root ssl-cert 4096 Nov 13 14:01 ./ drwxr-xr-x 4 root root 4096 Nov 13 12:31 ../ -rw-r----- 1 root ssl-cert 1708 Mai 9 2019 ssl-cert-snakeoil.key -rw-r----- 1 root ssl-cert 3272 Nov 13 14:01 zabbix-website.key
Der Schlüssel ändert sich - auch später bei Zertifikatsverlängerungen - nie
Zertifikatsanforderung Variante 1 - nur ein DNS-Name + Interaktiv
Wenn wir nur einen Servernamen im Zertifikat benötigen, reicht für die Zertifikatsanforderung dafür ein Einzeiler, die weiteren notwendigen Daten werden an Interaktiv abgefragt:
openssl req -new -key /etc/ssl/private/zabbix-website.key -out /tmp/zabbix-website-request.csr
Die Fragen könnt Ihr beliebig und auch mit Unsinn beantworten, außer die gelb markierte:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:Bremen
Locality Name (eg, city) []:Bremen
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Interne IT
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:zabbix.azulnet.net
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:EDV
Wo nichts steht habe ich einfach nur Enter gedrückt.
Gelb hinterlegt ist die Stelle wo Ihr dann den FQDN des Servers eintragen müsst.
Zertifikatsanforderung Variante 1 - mehrere DNS-Namen + IP
Wenn wir da mehr als einen Namen unterbringen wollen, müssen wir uns zunächst eine Konfigurationsdatei dafür erstellen.
nano /etc/ssl/private/zabbix-website.conf
mit folgendem Inhalt:
[req] distinguished_name = req_distinguished_name req_extensions = req_ext prompt = no [req_distinguished_name] C = DE ST = Bremen L = Bremen O = Interne IT OU = EDV CN = zabbix.azulnet.net [req_ext] subjectAltName = @alt_names [alt_names] IP.1 = 192.168.0.96 DNS.1 = monitoring.azulnet.net DNS.2 = zabbix DNS.3 = monitoring
Gelb hinterlegt ist der primäre Name des Servers, dieser ist dann direkt beim Aufruf der Eigenschaften des Zertifikates zu sehen.
Hellblau ist die IP-Adresse des Systems. Kann man auch weglassen. Aber - wenn der Browser es zulässt - gibt es auch keine Warnung wenn man nur die IP-Adresse des Servers im Browser eingibt (ist eigentlich falsch, wird aber oft aktzeptiert).
Orange dann alle weiteren DNS oder NetBIOS Namen auf die der Server hören soll.
Quellen
- https://constey.de/2011/04/howto-zertifikat-unter-ubuntu-erstellen-und-mit-windows-ca-zertifizieren/
- https://www.cybersylum.com/2022/02/28/using-openssl-to-create-certificate-signing-request-with-subject-alternative-names/
- https://medium.com/@spawnrider/creating-a-multi-domain-san-ssl-certificate-using-openssl-2a3865ccb62a
- https://it-ratgeber.com/active-directory-zertifikatdienste-installieren/
- https://znil.net/index.php?title=Zertifikate_mit_g%C3%BCltigkeitsdauer_l%C3%A4nger_als_1_Jahr_erlauben_bei_eigener_Zertifizierungsstelle
