Zabbix Webftontend über HTTPS verschluesseln

SSL Zertifikat beschaffen

Damit Sie das Webfrontend von Zabbix per HTTPS verschlüsselt aufrufen können, brauchen Sie ein gültiges SSL-Zertifikat. Wenn Sie viele Mitarbeiter haben, die von vielen unterschiedlichen Browsern auf Zabbix zugreifen, dann empfiehlt es sich ein SSL-Zertifikat zu kaufen, das von allen Browsern erkannt wird.

Sehr günstige Zertifikate können Sie zum Beispiel bei Godaddy.com kaufen. Als kostenlose Alternative können Sie mit Openssl ein eigenes Zertifikat erzeugen und selbst signieren.

Zertifikat erstellen

Stellen Sie sich, dass Openssl installiert ist.
Erstellen Sie einen Ordner für die Zabbix-Zertifikate, zum Beispiel

mkdir -p /etc/ssl/certs/zabbix-server
cd /etc/ssl/certs/zabbix-server

Privatekey erzeugen

openssl genrsa -des3 -out server.key 2048

Dieser Schlüssel wird mit einem Passwort versehen, welches Sie später noch brauchen werden. Es empfiehlt sich aber auch, einen Schlüssel ohne im Dateisystem abzulegen, weil Sie sonst bei jedem Start oder Neustart des Webservers das Passwort eingeben müssen. Entfernen Sie das Passwort vom Key wie folgt:

openssl rsa -in server.key -out server_nopw.key

Certificate Signing Request erzeugen

openssl req -new -key server_nopw.key -out server.csr

Geben Sie nur die Daten für Ihr Zertifikat an.

Wichtig: Als "Common Name (eg, YOUR name) []:" müssen Sie den Domain- oder Subdomainnamen angeben, unter dem Sie das Webfrontend später aufrufen wollen, zum Beispiel zabbix.example.com.

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]:Hessen
Locality Name (eg, city) []:Frankfurt am Main
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Zabbix
Organizational Unit Name (eg, section) []:Monitoring
Common Name (eg, YOUR name) []:zabbix.example.com
E-Mail Address []:info@example.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

"A challenge password []" geben Sie nicht an.

Zertifikat kaufen

Mit der erzeugten CSR Datei können Sie nun bei den bekannten Zertifizierungsstellen ein SSL Zertifikat kaufen. Per Copy und Past übertragen Sie den Inhalt der Datei in Webformular.

Erzeuge das Self-Signed Certificate

Wenn Sie kein Zertifikat kaufen möchten, erstellen Sie mit folgendem Befehl ein eigenes Zertifikat.

openssl x509 -req -days 999 -in server.csr -signkey server_nopw.key -out server.crt

HTTPS in Apache einrichten

SSL Modul und Port 443 aktivieren

Stellen Sie sicher, dass das SSL-Modul von Apache aktiviert ist.

a2enmod ssl

In der Apache-Konfiguration zum Beispiel in der Datei /etc/apache2/ports.conf sollte der Port 443 aktiviert sein, sobald das SSL-Modul geladen ist.

<IfModule mod_ssl.c>
   # SSL name based virtual hosts are not yet supported, therefore no
   # NameVirtualHost statement here
   Listen 443
</IfModule>

Einen virtual Host mit SSL anlegen

Fügen Sie in einen virtual Host ein, der das Zabbix-Webfrontend per SSL ausliefert. Wenn Sie noch keine SSL-Vertialhosts haben, ist die Datei /etc/apache2/sites-available/default-ssl ein geeigneter Ort. Achten Sie darauf, dass sich auch ein symbolishcer Link zu dieser Datei auch im Verzeichnis /etc/apache2/sites-enabled befindet.

<IfModule mod_ssl.c>
<VirtualHost _default_:443>
        ServerAdmin webmaster@localhost
        ServerName zabbix.example.com
        SSLEngine On
        SSLCertificateFile /etc/ssl/certs/zabbix-server/server.crt
        SSLCertificateKeyFile /etc/ssl/certs/zabbix-server/server_nopw.key
        DocumentRoot /var/www/zabbix/
</VirtualHost>
</IfModule>

Bundle einbinden

Wenn Sie Ihr Zertifikat gekauft haben, dann wird die Zertifizierungstelle zum Beispiel Geotrust oder Godaddy.com Ihnen ein Zertifikat und ein sogenanntes Bundle schicken.

Das Bundle besteht aus einer Reihe Zertifikaten, die Sie ausliefern müssen, damit die Browser Ihr Zertifikat validieren können. Besonders ältere Browser erkennen die gekauften Zertifikate nicht, wenn das Bundle fehlt.

Wenn Sie ein Bundle erhalten haben, dann sieht binden Sie die Zertifikate wie folgt ein.

SSLEngine On
SSLCertificateChainFile /etc/ssl/certs/zabbix-server/gd_bundle.crt
SSLCertificateFile /etc/ssl/certs/zabbix-server/godaddy_cert.crt
SSLCertificateKeyFile /etc/ssl/certs/zabbix-server/server_nopw.key