Ubuntu SAN Zertifikat anfordern mit interner Microsoft CA Zertifizierungsstelle und in Apache verwenden: Unterschied zwischen den Versionen
Aus znilwiki
BLinz (Diskussion | Beiträge) Die Seite wurde neu angelegt: „<u>'''Changelog:'''</u><br> * 13.11.2025 erste Version ---- ==Vorwort== In dieser Anleitung habe ich mir zusammengeschrieben wie<br> * 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.<br> Das ganze zeige ich hier anhand…“ |
BLinz (Diskussion | Beiträge) |
||
| (11 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 10: | Zeile 10: | ||
Das ganze zeige ich hier anhand eines Zabbix-Servers der bisher nur über {{code|http}} erreichbar ist, zukünftig aber über {{code|https}} angesprochen werden soll.<br> | Das ganze zeige ich hier anhand eines Zabbix-Servers der bisher nur über {{code|http}} erreichbar ist, zukünftig aber über {{code|https}} angesprochen werden soll.<br> | ||
<br> | <br> | ||
{{Warnung| Erst lesen! Dann machen! Ich nutze hier einen Server mit den Standard Apache-Dateien, fummelt Ihr auf einem Produktivsystem bei euch rum, braucht ihr ggf. nicht alle Schritte!}} | |||
---- | ---- | ||
==Auf dem Linux-Server== | ==Auf dem Linux-Server== | ||
===Voraussetzungen=== | ===Voraussetzungen=== | ||
Auf meinem Ubuntu Server ist der Apache2 Webserver installiert mit mindestens folgenden Optionen sind aktiviert:<br> | Auf meinem Ubuntu Server ist der Apache2 Webserver installiert mit mindestens folgenden Optionen sind aktiviert:<br> | ||
a2enmod ssl | a2enmod ssl | ||
systemctl restart apache2.service | |||
welche Module bereits aktiviert sind bekommt man mit {{code|apache2ctl -M}} heraus, der obige Befehl schadet aber auch nicht falls es schon aktiviert ist.<br> | welche Module bereits aktiviert sind bekommt man mit {{code|apache2ctl -M}} heraus, der obige Befehl schadet aber auch nicht falls es schon aktiviert ist.<br> | ||
Es gibt unter Apache ab Werk 2 getrennte Dateien für Port 80 und 443:<br> | Es gibt unter Apache ab Werk 2 getrennte Dateien für Port 80 und 443:<br> | ||
| Zeile 23: | Zeile 26: | ||
-rw-r--r-- 1 root root 1768 Jul 6 2023 000-default.conf | -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 | -rw-r--r-- 1 root root 6338 Okt 10 2018 default-ssl.conf | ||
wovon aber nur die {{code|000-default.conf}} aktiviert ist, diese enthält die Port 80 (='''http''') Konfiguration | wovon aber nur die {{code|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 {{code|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:<br> | |||
:[[Datei:ClipCapIt-251113-134739.PNG]]<br> | |||
<br> | |||
---- | |||
===Zertifikatsschlüssel erstellen=== | |||
Ab Werk nutzt die {{code|default-ssl.conf}} das folgende Zertifikat:<br> | |||
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.<br> | |||
Zuerst brauchen wir einen eigenen, privaten Schlüssel:<br> | |||
openssl genrsa -out /etc/ssl/private/zabbix-website.key 4096 | |||
und noch den Besitzer und die Rechte anpassen:<br> | |||
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:<br> | |||
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<br> | |||
<br> | |||
---- | |||
===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:<br> | |||
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:<br> | |||
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) []:<span style="background:yellow">zabbix.azulnet.net</span> | |||
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.<br> | |||
Gelb hinterlegt ist die Stelle wo Ihr dann den FQDN des Servers eintragen müsst.<br> | |||
<br> | |||
---- | |||
===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.<br> | |||
Diese lege ich hier mit in das Verzeichnis mit dem Key (damit ich diese später für Verlängerungen wiederfinde):<br> | |||
nano /etc/ssl/private/zabbix-website.conf | |||
mit folgendem Inhalt:<br> | |||
[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 = <span style="background:yellow">zabbix.azulnet.net</span> | |||
[req_ext] | |||
subjectAltName = @alt_names | |||
[alt_names] | |||
IP.1 = <span style="background:lightblue">192.168.0.96</span> | |||
DNS.1 = <span style="background:yellow">zabbix.azulnet.net</span> | |||
DNS.2 = <span style="background:orange">monitoring.azulnet.net</span> | |||
DNS.3 = <span style="background:orange">zabbix</span> | |||
DNS.4 = <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> | |||
Ja, der muss unbedingt zwei mal hinterlegt werden, der {{code|CN =}} Eintrag dient nur der Anzeige, der {{code|DNS.1 =}} Eintrag muss unbedingt auch gemacht werden!<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:orange">Orange</span> dann alle weiteren DNS oder NetBIOS Namen auf die der Server hören soll.<br> | |||
<br> | |||
Das Zertifikat fordern wir nun unter der Zuhilfenahme dieser Konfigurationsdatei an:<br> | |||
openssl req -new -key /etc/ssl/private/zabbix-website.key -out /tmp/zabbix-website-request.csr -config /etc/ssl/private/zabbix-website.conf | |||
<br> | |||
---- | |||
===Zertifikatsanforderung einreichen=== | |||
Egal welche der beiden Wege Ihr genommen habt, nun sollte es eine Datei mit der Anforderung geben: | |||
/tmp/zabbix-website-request.csr | |||
Wenn wir und den Inhalt per<br> | |||
cat /tmp/zabbix-website-request.csr | |||
Anzeigen lassen, sollte es wie folgt aussehen:<br> | |||
-----BEGIN CERTIFICATE REQUEST----- | |||
MIIFAjCCAuoCAQAwbzELMAkGA1UEBhMCREUxDzANBgNVBAgMBkJyZW1lbjEPMA0G | |||
A1UEBwwGQnJlbWVuMRMwEQYDVQQKDApJbnRlcm5lIElUMQwwCgYDVQQLDANFRFYx | |||
... | |||
... | |||
162EoNtOl11TgM1bTOLJPasOTOx8SuB2tdZ4n3ca9f6BT0x/QnU= | |||
-----END CERTIFICATE REQUEST----- | |||
<br> | |||
In einem Webbrowser navigieren wird auf die Seite der '''''Zertifizierungsstellen-Webregistrierung''''', die URL ist typischweise | |||
http://<DNS oder IP>/certsrv/ | |||
Achtung: Default '''KEIN''' https!!!<br> | |||
Es kann sein das der eine Anmeldung anfordert für einen berechtigten Benutzer, es sollte einer mit Administratoren-Rechten sein:<br> | |||
:[[Datei:ClipCapIt-251113-144433.PNG]]<br> | |||
:[[Datei:ClipCapIt-251113-144528.PNG]]<br> | |||
Dann erscheint dieser Dialog:<br> | |||
:[[Datei:ClipCapIt-251113-145857.PNG]]<br> | |||
In diesen kopiert Ihr oben den Inhalt der {{code|*.csr}} Datei hinein und wählt unten bei den Vorlagen {{code|Webserver}} aus.<br> | |||
Wenn Ihr eine eigene Vorlage erstellt habt, könnt Ihr natürlich auch diese nehmen.<br> | |||
Dann schickt Ihr die Anforderung per {{key|Einsenden}} ab.<br> | |||
<br> | |||
Jetzt kommt es drauf an, wie eure Zertifizierungsstelle konfiguriert ist - ob diese noch erst genehmigt werden müssen, das muss ein Administrator in der Zertifizierungsstellen Konsole tun, oder ob es automatisch genehmigt wird.<br> | |||
Bei automatischer Genehmigung können wir das Zertifikat direkt herunterladen:<br> | |||
:[[Datei:ClipCapIt-251113-150911.PNG]]<br> | |||
Ihr wählt bitte {{code|DER-codiert}} und den ersten der beiden Links.<br> | |||
Die Datei heißt in der Regel immer {{code|certnew.ver}}, ich empfehle diese als ersten in den Servernamen umzubenennen bzw. passen zum Namen der Key-Datei.<br> | |||
<br> | |||
---- | |||
===Zertifikat konvertieren=== | |||
Die Datei von der Zertifizierungsstelle im DER-Format ist '''NICHT''' mit einem Texteditor lesbar und so nicht direkt auf unserem Linux-Apache-Webserver zu gebrauchen. Wir müssen diese erst umwandeln.<br> | |||
Das kann man auch unter Windows machen - wenn man sich OpenSSL installiert: https://slproweb.com/products/Win32OpenSSL.html,<br> | |||
oder unter Windows im Subsystem für Linux,<br> | |||
oder Ihr kopiert die Datei z.B. per WinSCP auf euren Linux Webserver.<br> | |||
In dem Beispiel hier habe ich die Datei auf den Linux-Server kopiert, die Ausgabedatei ist direkt die Datei die ich dann für den Apache verwende:<br> | |||
openssl x509 -in /root/zabbix-website.cer -inform DER -out /etc/ssl/certs/zabbix-website.pem -outform PEM | |||
Die {{code|PEM}} ist nun wieder eine normale Text-Datei, der Inhalt sieht wieder wie folgt aus:<br> | |||
cat /etc/ssl/certs/zabbix-website.pem | |||
Inhalt:<br> | |||
-----BEGIN CERTIFICATE----- | |||
MIIHfzCCBWegAwIBAgITcAAAAAL2WVTqlQxgjgAAAAAAAjANBgkqhkiG9w0BAQsF | |||
ADA9MRMwEQYKCZImiZPyLGQBGRYDTkVUMRcwFQYKCZImiZPyLGQBGRYHQVpVTE5F | |||
... | |||
... | |||
WxxLsfVLLVhD/Q5th8ozbFaDt9JBnS0TJ/wqX5HyZeobF9WST61XvsAAXX9NqkPR | |||
BPw3 | |||
-----END CERTIFICATE----- | |||
Nun haben wir die 2 Dateien die wir brauchen, das Zertifikat und den dazu gehörigen Schlüssel/Key: | |||
Zertifikat: /etc/ssl/certs/zabbix-website.pem | |||
Schlüssel: /etc/ssl/private/zabbix-website.key | |||
<br> | |||
---- | |||
===Zertifikat in Webseitenkonfiguration einbauen=== | |||
Ich bearbeite die Datei {{code|default-ssl.conf}} | |||
nano /etc/apache2/sites-available/default-ssl.conf | |||
und ändere die Zeilen<br> | |||
# A self-signed (snakeoil) certificate can be created by installing | |||
# the ssl-cert package. See | |||
# /usr/share/doc/apache2/README.Debian.gz for more info. | |||
# If both key and certificate are stored in the same file, only the | |||
# SSLCertificateFile directive is needed. | |||
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem | |||
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key | |||
in | |||
# A self-signed (snakeoil) certificate can be created by installing | |||
# the ssl-cert package. See | |||
# /usr/share/doc/apache2/README.Debian.gz for more info. | |||
# If both key and certificate are stored in the same file, only the | |||
# SSLCertificateFile directive is needed. | |||
SSLCertificateFile /etc/ssl/certs/zabbix-website.pem | |||
SSLCertificateKeyFile /etc/ssl/private/zabbix-website.key | |||
Danach den Apache die Konfiguration neu einlesen lassen in dem wir diesen neu starten:<br> | |||
systemctl restart apache2.service | |||
Wenn Ihr nun die Webseite per https aufruft (und das Zertifikat eurer CA auf eurem Rechner hinterlegt ist), sollte die Seite ohne Warnung erscheinen.<br> | |||
---- | ---- | ||
===Umleitung http zu https=== | |||
Habe ich hier beschrieben: https://znil.net/index.php?title=Apache2_http_zu_https_Umleitung | |||
<br> | |||
---- | |||
==Quellen== | ==Quellen== | ||
* https://constey.de/2011/04/howto-zertifikat-unter-ubuntu-erstellen-und-mit-windows-ca-zertifizieren/ | * https://constey.de/2011/04/howto-zertifikat-unter-ubuntu-erstellen-und-mit-windows-ca-zertifizieren/ | ||
| Zeile 35: | Zeile 214: | ||
* https://it-ratgeber.com/active-directory-zertifikatdienste-installieren/ | * 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 | * https://znil.net/index.php?title=Zertifikate_mit_g%C3%BCltigkeitsdauer_l%C3%A4nger_als_1_Jahr_erlauben_bei_eigener_Zertifizierungsstelle | ||
* https://www.der-windows-papst.de/2021/04/17/zertifikatsvorlage-laesst-sich-nicht-veroeffentlichen/ | |||
---- | ---- | ||
==Kommentare== | ==Kommentare== | ||
<comments /> | <comments /> | ||
Aktuelle Version vom 13. November 2025, 16:09 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.
Diese lege ich hier mit in das Verzeichnis mit dem Key (damit ich diese später für Verlängerungen wiederfinde):
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 = zabbix.azulnet.net DNS.2 = monitoring.azulnet.net DNS.3 = zabbix DNS.4 = monitoring
Gelb hinterlegt ist der primäre Name des Servers, dieser ist dann direkt beim Aufruf der Eigenschaften des Zertifikates zu sehen.
Ja, der muss unbedingt zwei mal hinterlegt werden, der {{{1}}} Eintrag dient nur der Anzeige, der {{{1}}} Eintrag muss unbedingt auch gemacht werden!
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.
Das Zertifikat fordern wir nun unter der Zuhilfenahme dieser Konfigurationsdatei an:
openssl req -new -key /etc/ssl/private/zabbix-website.key -out /tmp/zabbix-website-request.csr -config /etc/ssl/private/zabbix-website.conf
Zertifikatsanforderung einreichen
Egal welche der beiden Wege Ihr genommen habt, nun sollte es eine Datei mit der Anforderung geben:
/tmp/zabbix-website-request.csr
Wenn wir und den Inhalt per
cat /tmp/zabbix-website-request.csr
Anzeigen lassen, sollte es wie folgt aussehen:
-----BEGIN CERTIFICATE REQUEST----- MIIFAjCCAuoCAQAwbzELMAkGA1UEBhMCREUxDzANBgNVBAgMBkJyZW1lbjEPMA0G A1UEBwwGQnJlbWVuMRMwEQYDVQQKDApJbnRlcm5lIElUMQwwCgYDVQQLDANFRFYx ... ... 162EoNtOl11TgM1bTOLJPasOTOx8SuB2tdZ4n3ca9f6BT0x/QnU= -----END CERTIFICATE REQUEST-----
In einem Webbrowser navigieren wird auf die Seite der Zertifizierungsstellen-Webregistrierung, die URL ist typischweise
http://<DNS oder IP>/certsrv/
Achtung: Default KEIN https!!!
Es kann sein das der eine Anmeldung anfordert für einen berechtigten Benutzer, es sollte einer mit Administratoren-Rechten sein:
Dann erscheint dieser Dialog:
In diesen kopiert Ihr oben den Inhalt der *.csr Datei hinein und wählt unten bei den Vorlagen Webserver aus.
Wenn Ihr eine eigene Vorlage erstellt habt, könnt Ihr natürlich auch diese nehmen.
Dann schickt Ihr die Anforderung per Einsenden ab.
Jetzt kommt es drauf an, wie eure Zertifizierungsstelle konfiguriert ist - ob diese noch erst genehmigt werden müssen, das muss ein Administrator in der Zertifizierungsstellen Konsole tun, oder ob es automatisch genehmigt wird.
Bei automatischer Genehmigung können wir das Zertifikat direkt herunterladen:
Ihr wählt bitte DER-codiert und den ersten der beiden Links.
Die Datei heißt in der Regel immer certnew.ver, ich empfehle diese als ersten in den Servernamen umzubenennen bzw. passen zum Namen der Key-Datei.
Zertifikat konvertieren
Die Datei von der Zertifizierungsstelle im DER-Format ist NICHT mit einem Texteditor lesbar und so nicht direkt auf unserem Linux-Apache-Webserver zu gebrauchen. Wir müssen diese erst umwandeln.
Das kann man auch unter Windows machen - wenn man sich OpenSSL installiert: https://slproweb.com/products/Win32OpenSSL.html,
oder unter Windows im Subsystem für Linux,
oder Ihr kopiert die Datei z.B. per WinSCP auf euren Linux Webserver.
In dem Beispiel hier habe ich die Datei auf den Linux-Server kopiert, die Ausgabedatei ist direkt die Datei die ich dann für den Apache verwende:
openssl x509 -in /root/zabbix-website.cer -inform DER -out /etc/ssl/certs/zabbix-website.pem -outform PEM
Die PEM ist nun wieder eine normale Text-Datei, der Inhalt sieht wieder wie folgt aus:
cat /etc/ssl/certs/zabbix-website.pem
Inhalt:
-----BEGIN CERTIFICATE----- MIIHfzCCBWegAwIBAgITcAAAAAL2WVTqlQxgjgAAAAAAAjANBgkqhkiG9w0BAQsF ADA9MRMwEQYKCZImiZPyLGQBGRYDTkVUMRcwFQYKCZImiZPyLGQBGRYHQVpVTE5F ... ... WxxLsfVLLVhD/Q5th8ozbFaDt9JBnS0TJ/wqX5HyZeobF9WST61XvsAAXX9NqkPR BPw3 -----END CERTIFICATE-----
Nun haben wir die 2 Dateien die wir brauchen, das Zertifikat und den dazu gehörigen Schlüssel/Key:
Zertifikat: /etc/ssl/certs/zabbix-website.pem Schlüssel: /etc/ssl/private/zabbix-website.key
Zertifikat in Webseitenkonfiguration einbauen
Ich bearbeite die Datei default-ssl.conf
nano /etc/apache2/sites-available/default-ssl.conf
und ändere die Zeilen
# A self-signed (snakeoil) certificate can be created by installing
# the ssl-cert package. See
# /usr/share/doc/apache2/README.Debian.gz for more info.
# If both key and certificate are stored in the same file, only the
# SSLCertificateFile directive is needed.
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
in
# A self-signed (snakeoil) certificate can be created by installing
# the ssl-cert package. See
# /usr/share/doc/apache2/README.Debian.gz for more info.
# If both key and certificate are stored in the same file, only the
# SSLCertificateFile directive is needed.
SSLCertificateFile /etc/ssl/certs/zabbix-website.pem
SSLCertificateKeyFile /etc/ssl/private/zabbix-website.key
Danach den Apache die Konfiguration neu einlesen lassen in dem wir diesen neu starten:
systemctl restart apache2.service
Wenn Ihr nun die Webseite per https aufruft (und das Zertifikat eurer CA auf eurem Rechner hinterlegt ist), sollte die Seite ohne Warnung erscheinen.
Umleitung http zu https
Habe ich hier beschrieben: https://znil.net/index.php?title=Apache2_http_zu_https_Umleitung
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
- https://www.der-windows-papst.de/2021/04/17/zertifikatsvorlage-laesst-sich-nicht-veroeffentlichen/
