Sendmail StartSSL Zertifikat für SSL/TLS

Neu: Mail Zertifikate mit let’s encrypt

Mit let’s encrypt die Gewünschten Zertifikate erstellen. Diese können dann auch für den Mailserver benutzt werden.

In diesem Artikel habe ich das Setup beschrieben.

Kurz:

  1. Zertifikate Installieren (z.B. mail.domain.com)
  2. sendmail.mc anpassen:
    vi /etc/mail/my_prefs/sendmail.mc
    Settings:
    define(`CERT_DIR', `/global/configs/letsencrypt_data/live/mail.domain.com')dnl
    define(`confCACERT_PATH', `CERT_DIR')dnl
    define(`confCACERT', `CERT_DIR/chain.pem')dnl
    define(`confSERVER_CERT', `CERT_DIR/cert.pem')dnl
    define(`confCLIENT_CERT', `CERT_DIR/cert.pem')dnl
    define(`confSERVER_KEY', `CERT_DIR/privkey.pem')dnl
    define(`confCLIENT_KEY', `CERT_DIR/privkey.pem')dnl
    cd /etc/mail
    make
  3. Berechtigungen updaten
    chmod 600 /global/configs/letsencrypt_data/live/mail.domain.com/privkey.pem 
  4. Sendail neu starten.
    rcsendmail restart

Zertifikate mit Startssl.com (veraltet)

Als erstes auf dem Server Key & CSR erstellen:

cd /etc/mail/certs

openssl req -new -newkey rsa:2048 -nodes -keyout hostname.domain.com.key -out hostname.domain.com.csr

Hier ist nun sehr wichtig, dass bei “Common Name” der Hostname des Servers (also hier hostname.domain.com) eingetragen wird.

Country Name (2 letter code) [AU]:CH
State or Province Name (full name) [Some-State]:AG
Locality Name (eg, city) []:Mein Ort
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Firmenname 
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:hostname.domain.com
Email Address []:hostmaster@domain.com

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

Nun File protecten:

chmod 600 hostname.domain.com.key

Jetzt zu startssl.com gehen

  1. Als erstes im Tab Validations Wizard für domain.com eine Domain Name Validation machen.
  2. Sobald die Domain validiert ist, im Certificates Wizard ein Webserver SSL/TLS Certificate anfordern für hostname.domain.com (oder einfach auch gleich *.domain.com)
    Hier den Generate Private Key skippen, da wir vorher auf unserem Server den Key bereits generiert haben.
  3. Nun bei Submit Certificate Request (CSR) den gesamten Inhalt von hostname.domain.com.csr reinkopieren.
cat hostname.domain.com.csr

Nachdem das Zertifikat generiert wurde, kopiere den gesamten Inhalt in das neue File reinkopieren:

vi hostname.domain.com.crt

Jetzt noch die Certs von Startssl.com downloaden:

fetch -o startssl-ca-bundle.pem https://www.startssl.com/certs/ca-bundle.pem 

Wenn man bereits ein anderes Bundle auf auf dem Server hat (in meinem Fall war da noch cacert.pem), muss man das von Startssl nun damit kombinieren. Dazu einfach das bestehende File kopieren:

cp /etc/mail/certs/cacert.pem /etc/mail/certs/ca-bundle.crt

Und nun mit Startssl Cert Bundle kombinieren. Hat man kein bestehendes Bundle, wird hier einfach ein neues File erstellt:

cat startssl-ca-bundle.pem >> ca-bundle.crt

Sendmail konfigurieren

Nun das /etc/mail/freebsd.mc (oder hostname.mc, etc.) anpassen.

dnl ### SSL Zeug
define(`CERT_DIR', `/etc/mail/certs')dnl
define(`confCACERT_PATH', `CERT_DIR')dnl
define(`confCACERT', `CERT_DIR/ca-bundle.crt')dnl
define(`confSERVER_CERT', `CERT_DIR/hostname.domain.com.crt')dnl
define(`confSERVER_KEY', `CERT_DIR/hostname.domain.com.key')dnl
define(`confCRL', `CERT_DIR/revocation.list')dnl

Nun die Configs neu builden und sendmail neu starten.

cd /etc/mail
make
rcsendmail restart

 

Testen

Das wichtigste ist, dass STARTTLS aktiviert ist. Das kann man einfach per telnet testen:

# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 hostname.domain.com ESMTP Sendmail 8.14.9/8.14.7; Sun, 26 Oct 2014 18:13:33 +0100 (CET)
EHLO test.com
250-hostname.domain.com Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE 104857600
250-DSN
250-ETRN
250-AUTH LOGIN PLAIN DIGEST-MD5 CRAM-MD5
250-STARTTLS
250-DELIVERBY
250 HELP
quit

Ist STARTTLS hier nicht verfügbar, maillog auf eventuelle Fehlermeldungen testen.  Dieser Fehler kann z.B. dazu führen, dass STARTTLS nicht verfügbar ist:

Oct 26 18:02:55 hostname sm-mta[43613]: STARTTLS=server: file /etc/mail/certs/hostname.domain.com.key unsafe: Group readable file

In dem Fall löst ein chmod 600 /etc/mail/certs/hostname.domain.com.key das Problem.

Ausserdem kann man noch über diese Webseite den Mailserver von extern testen: http://www.checktls.com/

 

  • *

    You may use these HTML tags: <a> <abbr> <acronym> <b> <blockquote> <cite> <code> <del> <em> <i> <q> <s> <strike> <strong>

  • Comment Feed for this Post
Go to Top