Tag Archiv für openssl

Lösung des Problems von Postfix mit der OpenSSL Option ZLIB

Vor knapp 2 Wochen habe ich meinen Mailserver von FreeBSD 9.3 auf FreeBSD 10.2 umgezogen. Ich hatte so ziemlich alles vorher getestet, allerdings nicht die Verschlüsselung des Mailverkehrs von Postfix und Dovecot, weil das offizielle Zertifikat auf den Hostnamen ausgestellt war, der zum Zeitpunkt des Testens noch auf dem alten Server konfiguriert war. Da das offizielle StartSSL Zertifikat 2 Tage nach dem Umzug ausgelaufen wäre, habe ich mir ein neues ausstellen lassen und das dann gleich auf dem neuen Server aktiviert. Als dann der Produktivbetrieb auf dem neuen Server startete, produzierten  die SMTP und SMTPD Prozesse von Postfix plötzlich beunruhigend viele Abstürze mit Signal 11:

Dec 10 16:17:10 saruman kernel: pid 72535 (smtpd), uid 125: exited on signal 11
Dec 10 16:18:49 saruman kernel: pid 72552 (smtp), uid 125: exited on signal 11
Dec 10 16:18:49 saruman kernel: pid 72556 (smtp), uid 125: exited on signal 11
Dec 10 16:18:49 saruman kernel: pid 72557 (smtp), uid 125: exited on signal 11
Dec 10 16:18:50 saruman kernel: pid 72553 (smtp), uid 125: exited on signal 11
Dec 10 16:18:50 saruman kernel: pid 72555 (smtp), uid 125: exited on signal 11
Dec 10 16:18:50 saruman kernel: pid 72551 (smtp), uid 125: exited on signal 11
Dec 10 16:18:50 saruman kernel: pid 72550 (smtp), uid 125: exited on signal 11
Dec 10 16:18:51 saruman kernel: pid 72554 (smtp), uid 125: exited on signal 11
Dec 10 16:19:44 saruman kernel: pid 72542 (smtpd), uid 125: exited on signal 11
Dec 10 16:28:18 saruman kernel: pid 72785 (smtpd), uid 125: exited on signal 11

Nach einigem Ausprobieren (Deaktivieren sämtlicher Postfixerweiterungen wie Postgrey, Amavisd-New, dccifd, policyd-weight), Neukompilieren von Postfix mit allen Paketen, von denen es selber abhängig ist, und natürlich ausgiebigen Netzrecherchen bin ich auf diesen Thread der Postfix-User ML gestoßen und die schon 2 Jahre alte und für ein 2.9er Postfix unter FreeBSD 9.2 vorgeschlagenen Lösung, die OpenSSL Kompression beim Bauen von OpenSSL wegzulassen hat mir aktuell auch noch geholfen. Nachdem ich erst OpenSSL ohne ZLIB Option und dann Postfix neu kompiliert hatte, traten keine Signal 11 Crashs mehr auf.

SSL-Zertifikat für Apache und Dovecot bei Startssl.com erstellen

Das israelische Unternehmen StartSSL.com bietet kostenlose SSL-Zertifikate, die von Browsern vollständig akzeptiert werden, weil das Root-Zertifikat von StartSSL.com in eigentlich allen Browsern schon direkt hinterlegt ist.

Zunächst mit dem Browser wieder anmelden, den man beim letzten mal benutzt hat (und hoffentlich ist das kürzer als ein Jahr her, sonst ist das Authentifizierungs-Zertifikat abgelaufen). Dann den Certificates Wizard aufrufen. Als Certificate Target „Web Server SSL/TLS Certificate“ auswählen.  Auf der nächsten Seite mit Skip weitermachen.

Zwischendurch auf dem Webserver mit

openssl genrsa -out hostname.domain.tld.key 4096

den privaten und öffentlichen Schlüssel und mit

openssl req -new -key hostname.domain.tld.key -out hostname.domain.tld.csr

den eigentlichen Certificate Signing Request erstellen. Dann den Inhalt der Datei hostname.domain.tld.csr im Browser auf der nächsten Seite von Startssl.com in das Eingabefeld übertragen. Auf der nächsten Seite die Domain auswählen, zu der das Zertifikat gehört und auf der nächsten Seite die Subdomäne eintragen und den Certificate Signing Request abschicken.

Nach kurzer Zeit findet man dann in der Tool Box unter dem Punkt Retrieve Certificate das beantragte Zertifikat und kann es dann mit Cut&Paste auf den Webserver übertragen und in der Apache Konfiguration eintragen. Das Webserverzertifikat kann übrigens auch problemlos für Postfix und Dovecot genutzt werden!

Bei dem zweiten openssl Aufruf (openssl req) wird man am Schluß nach einem Paßwort gefragt. Sollte man dort eines angegeben haben, dann startet Apache nur, wenn bei seinem Start auch immer das Paßwort des Zertifkats eingetippt wird. Man kann aber dieses Paßwort so wieder wegbekommen:

openssl rsa -in hostname.domain.tld.pem -out hostname.domain.tld.pem.neu

Zertifikat für Cyrus via TLS mit openssl erstellen

In der /usr/local/etc/imapd.conf eintragen:

tls_cert_file: /var/imap/certs/server.pem tls_key_file: /var/imap/certs/server.pem tls_ca_file: /var/imap/certs/server.pem

Und das Zertifikat erstellen mit:

openssl req -new -x509 -nodes -out /var/imap/certs/server.pem
            -keyout /var/imap/certs/server.pem -days 1500

Vorher sollte die /etc/ssl/openssl.cnf angepaßt sein, damit man nicht alles immer wieder beim Erstellen von Zertifikaten für die verschiedenen Dienste neu eintippen muß.

  • http://wiki.hidden.ch/index.php/Cyrus_Imapd
  • http://tldp.org/HOWTO/Postfix-Cyrus-Web-cyradm-HOWTO/cyrus-config.html
  • http://openmailadmin.ossdl.de/wiki/howto/Postfix-SASL-Cyrus-MySQL-Amavis-Postgrey-SpamAssassin-ClamAV-Squirrelmail-Mailman-Mailgraph-OMA