Monit und SSL

Nach vielen Stunden Arbeit gelang es mir nicht, Monit mit einem CA-signierten Zertifikat auf Port 2812 zu starten. Der Browser meldete ständig, dass die Gegenstelle der CA nicht traue. Ich vermute, dass der Support für signierte Zertifikate in Monit überhaupt nicht implementiert ist. Allerdings frage ich mich natürlich dann, wofür es eine Option allowselfcertification gibt.

Folgt man der Dokumentation unter http://www.tildeslash.com/monit/doc/ssl.php, erkennt man recht bald, dass dort kein CA-signiertes Zertifikat verwendet wird.

Da aber alle meine Zertifikate von CAcert.org (siehe Link unten) signiert wurden, wollte ich auch Monit darüber versorgen.

Vielleicht sollte ich mal die Entwickler direkt fragen.

Apache arbeitet nun als Proxy vor dem Monit-Server. Wie die Konfiguration im Einzelnen aussieht, folgt nun.

In der /etc/monitrc unter anderem Folgendes eintragen:

set httpd port 2812
use address localhost
allow localhost
signature disable

Zertifikate erstellen. Ich verwende hierfür in der Regel CA.pl. Nach der Erstellung des Requests habe ich das Zertifikat gleich unter CAcert.org signiert. Folgende Dateien liegen vor:

newcert.pem - signiertes Zertifikat
newkey.pem - Schlüssel mit Modus 600

Danach kann monit bereits gestartet werden.

Für den Apache sieht das nun wie folgt aus: Es wird eine IP-Adresse für die SSL-Verbindung benötigt. Falls noch keine SSL-Zertifikate im Apache benutzt wurden, kann hierfür die Server-eigene IP genommen werden.

Der VHost sieht bei mir in etwa wie folgt aus:

NameVirtualHost 78.46.253.228:443


ServerAdmin foobar@example.org
ServerName monit.roessner-net.de
ErrorLog /var/log/apache2/error_monit_ssl.log
TransferLog /var/log/apache2/access_monit_ssl.log
SSLEngine on
SSLCipherSuite HIGH:MEDIUM:!ADH
SSLCertificateFile /Pfad/zu//newcert.pem
SSLCertificateKeyFile /Pfad/zu/newkey.pem
# Das Folgezertifikat kann man direkt bei cacert.org herunterladen
SSLCACertificateFile /Pfad/zu/cacert_org.crt

AuthName "Monit"
AuthType Digest
AuthDigestProvider file
AuthUserFile /Pfad/zu/digest-password
Require valid-user

ProxyVia On
SSLProxyEngine On

Order deny,allow
Allow from all

ProxyPass / http://localhost:2812/
ProxyPassReverse / http://localhost:2812/
RewriteEngine On
ServerSignature On


Die Folgenden Module müssen geladen sein:

proxy.conf
proxy.load
proxy_http.load
rewrite.load
auth_digest.load
authn_file.load

So heißen die Dateien bei Ubuntu und wahrscheinlich auch Debian. Andere Distributionen kenne ich dies bzgl. leider nicht.

Nun muss noch die digest-password Datei erstellt werden:

cd /Pfad/zu (siehe oben. Wo soll die Digest Datei liegen?)
htdigest -c digest-password Monit benutzername

Anschließend den Apache neu starten und das sollte es gewesen sein. Ich würde mich über Kommentare freuen. Vor Allem, ob die Vorgehensweise sicher ist würde mich interessieren.