Kostenlose HTTPS-Zertifikate von WoSign / China

Da Let’s encrypt noch nicht so weit ist, ich aber trotzdem immer mal wieder HTTPS Zertifikate haben möchte die von den bekannten Webbrowsern ohne Rückfrage akzeptiert werden hab ich mir schon mal das ein oder andere günstige gekauft. Den Großteil verwalte ich aber noch mit CAcert.

Für die Zertifikate zu bezahlen war mir aber schon immer ein Dorn im Auge. Schon früh hatte ich mir StartSSL angeschaut aber das war mir alles deutlich zu umständlich. Über Twitter wurde ich dann auf einen neuen chinesischen Anbieter hingewiesen:

Lange Rede kurzer Sinn. Das ganze ist sehr simpel und funktioniert super:

  • Key + CSR erzeugen:
    openssl req -new -nodes -newkey rsa:4096 -sha256 -keyout host.example.net.key -out host.example.net.csr
  • URL öffnen: https://buy.wosign.com/free/
  • Formular ausfüllen, Domain bestätigen, Zertifikat beantragen, auf Email warten
  • Nach Erhalt der ZIP Datei mit Zertifikat und Intermediates die Bundle-Datei öffnen und den letzten Eintrag entfernen
  • Im Webserver einbinden und SSL Server Test machen um zu prüfen ob alles korrekt ist

Puppet: SSL Zertifikate neu erzeugen für Master, Agent und PuppetDB

Wenn man „ausversehen“ mal auf dem Puppetmaster Server ein

puppet cert clean --all

ausgeführt hat und dann versucht das ganze Schlamassel wieder auszubaden sind folgende Informationen gut zu wissen:

  • Neue Zertifikate auf den Nodes erzeugt man, in dem man das Verzeichnis /var/lib/puppet/ssl einfach umbenennt und den Agent neu laufen lässt:
    $ mv /var/lib/puppet/ssl /var/lib/puppet/ssl_old
    $ puppet agent --test --server puppet.example.org
  • Wenn man auf dem Puppetmaster ebenfalls ein neues Zertifikat erzeugt und es dann Fehlermeldungen auf den Nodes gibt nach dem Motto „hostname was not match with the server certificate“ helfen folgende Schritte:
    1. Auf dem Puppetmaster Server den Certificate Hostname anzeigen:
      $ puppet master --configprint certname
    2. Puppetmaster ausstellen und altes Zertifikat löschen:
      $ service puppetmaster stop
      $ find $(puppet master --configprint ssldir) -name "$(puppet master --configprint certname).pem" -delete
    3. Den Zertifikatsnamen und die Alternativen DNS-Namen in der /etc/puppet/puppet.conf eintragen mit den folgenden Optionen:
      [master]
      certname=puppet.example.org
      certdnsname=puppet.example.org
      dns_alt_names=puppetmaster.example.org
    4. Puppetmaster Server im Vordergrund starten und zusehen wie die neuen Zertifikate generiert werden, wenn die Meldung „notice: Starting Puppet master version…“ dort steht mit Strg+c beenden:
      $ puppet master --no-daemonize --verbose
      Strg+c
      $ service puppetmaster start
  • Wenn es dann von PuppetDB eine Fehlermeldung gibt nach dem Motto „‚replace facts‘ to PuppetDB: certificate verify failed“ hilft folgendes:
    $ service puppetdb stop
    $ mv /etc/puppetdb/ssl /etc/puppetdb/ssl_old
    $ /usr/sbin/puppetdb-ssl-setup -f
    $ service puppetdb start

Infos von hier und da.

HowTo: Zertifikatsdatei .crt direkt mit Nagios ueberwachen

Bei einem OpenVPN Server besteht das Problem, das sein Zertifikat nicht aktiv von aussen ueberprueft werden kann. Um es dennoch mit Nagios zu ueberwachen muss die .crt Datei auf dem Server direkt ueberprueft und die Informationen zum Nagios Server gepusht werden.

Ich habe das mit dem Shellskript ssl-cert-check (mirror v. 3.27) von prefetch.net geloest.

Das Skript habe ich unter /usr/local/bin/ abgelegt:

cd /usr/local/bin
wget http://prefetch.net/code/ssl-cert-check

Dann gibt es ein Mini-Skript unter /root/skripte/nagios/check_openvpncert.sh, dass das ssl-cert-check Skript aufruft, und die Rueckgabe per NSCA an den Nagios Server pusht:

#!/bin/bash
send_nsca=/usr/sbin/send_nsca
send_nsca_cfg=/etc/send_nsca.cfg
nagioshost=nagios.example.org
host=$1
service=$2
plugin=/usr/local/bin/ssl-cert-check
output=$($plugin -n -x 30 -c /etc/ssl/certs/openvpn.example.org.crt)
rc=$?
echo -e "$hostt$servicet$rct$output" | $send_nsca -H $nagioshost -to 30 -c $send_nsca_cfg
exit 0

Das Mini-Skript selbst wird regelmaessig mit cron aus der /etc/cron.d/nagios-passive aufgerufen:

LANG=C
#
# Regular cron jobs for nagios passive checks
#
 
HOST=openvpn.example.org
 
*/20 *  * * *   root    /root/skripte/nagios/check_openvpncert.sh ${HOST} SSL-Cert_OpenVPN 1>> /dev/null 2>> /dev/null

Und nach der Einbindung als passive Check in Nagios wird auch das Ablaufdatum eines lokalen Zertifikats ueberprueft:

nagiosovpncert