Archiv der Kategorie: Technik

Gleich ist nicht immer gleich

Das ist eigentlich allgemein bekannt, aber ich muss nur mal kurz meinen PHP-Frust loswerden. Ich durfte heute zu meinem Leidwesen feststellen, dass var_dump(10 == "10,5") als Ergebnis bool(true) ausgibt.

Das liegt ganz einfach daran, dass PHP anscheinend, wenn es zwei Strings vergleicht, die wie Integers aussehen (oder einen Integer mit einem String), diese zuerst in Integers umwandelt. Das ist historisch darin begründet, dass früher PHP quasi nur mit Strings gearbeitet hat, weil Browser auch nur Strings herüberschicken. Dafür hat PHP dann später auch den genauen Vergleich mittels === eingeführt. Der prüft auch darauf, ob die beiden Werte vom gleichen Typ sind.

Aber noch fieser wird es, weil ich die Keys von einem Array mit Strings vergleichen wollte. Ich dachte mir, ich achte einfach darauf, dass die Keys als Strings aufgebaut werden und mache dann einen strengen Vergleich. Tja, das würde ja funktionieren, wenn PHP nicht auch automagisch alle Array-Keys, die wie eine Integer aussehen, in einen Integer umwandeln würde, was sich nur über fiese Verrenkungen verhindern lässt.

Es wird also aus

array(
    "1" => "eins"
);

einfach so

array(
    1 => "eins"
);

gemacht.

Danke Obama PHP!

Väterlicher Stolz

Oh, ich bin so stolz auf unsere Kunden. Aus Gründen die zu umfangreich sind, um sie aufzuzählen benutzen wir in unserem Webshop Sofortüberweisung.de. Für die Unwissenden; das ist ein Dienst, dem man seine Bankdaten, PIN und TAN gibt, damit der dann damit die Überweisung tätigt und den Erfolg sofort dem Webshop mitteilt.

Aus irgendeinem Grund erscheint das einigen Kunden recht suspekt. Keine Ahnung, wieso…

Let’s Encrypt mit Postfix, Dovecot und Openfire einsetzen

Ich bin mal ins kalte Wasser gesprungen und habe mir Let’s Encrypt Zertifikate im Mailserver installiert. Da mein Webserver von einer (noch) nicht unterstützten Verwaltungssoftware betreut wird läuft da noch mein altes StartSSL Zertifikat. Aber auch da sollte es nur noch eine Frage der Zeit sein, bis Let’s Encrypt unterstützt wird.

Nach der Installation des Clients musste ich die Pfade zu den Zertifikaten anpassen.

Für Postfix in /etc/postfix/main.cf:

smtpd_tls_key_file = /etc/letsencrypt/live/[DOMAIN]/privkey.pem
smtpd_tls_cert_file = /etc/letsencrypt/live/[DOMAIN]/cert.pem
smtpd_tls_CAfile = /etc/letsencrypt/live/[DOMAIN]/chain.pem
smtp_tls_CAfile = $smtpd_tls_CAfile

Und für Dovecot in /etc/dovecot/conf.d/10-ssl.conf:

ssl_cert = </etc/letsencrypt/live/[DOMAIN]/cert.pem
ssl_key = </etc/letsencrypt/live/[DOMAIN]/privkey.pem
ssl_ca = </etc/letsencrypt/live/[DOMAIN]/chain.pem

Dann lass ich schließlich einmal im Monat per Cron folgendes Script laufen:

#!/bin/bash
service apache2 stop

$HOME/.local/share/letsencrypt/bin/letsencrypt certonly -t --agree-tos -m [EMAIL] --renew-by-default --standalone -d [DOMAIN]
$HOME/.local/share/letsencrypt/bin/letsencrypt certonly -t --agree-tos -m [EMAIL] --renew-by-default --standalone -d [JABBERDOMAIN]

service apache2 start

service dovecot restart
service postfix restart

openssl pkcs12 -export -in /etc/letsencrypt/live/[JABBERDOMAIN]/fullchain.pem -inkey /etc/letsencrypt/live/[JABBERDOMAIN]/privkey.pem -out /etc/letsencrypt/live/[JABBERDOMAIN]/fullchain.pkcs12 -name [JABBERDOMAIN] -passout pass:changeit
keytool -delete -alias [JABBERDOMAIN] -storepass changeit -keystore /etc/openfire/security/keystore
keytool -importkeystore -deststorepass changeit -destkeypass changeit -destkeystore /etc/openfire/security/keystore -srckeystore /etc/letsencrypt/live/[JABBERDOMAIN]/fullchain.pkcs12 -srcstoretype PKCS12 -srcstorepass changeit -alias [JABBERDOMAIN]
service openfire restart

Es ist ein gutes Gefühl zu wissen, dass ich mich da nie wieder mit Zertifikaten werde herumschlagen müssen.

Und ja, das Default-Passwort von Openfires keystore ist anscheinend wirklich „changeit“. :-/