Benutzer-Werkzeuge

Webseiten-Werkzeuge


Writing /srv/www/htdocs/udo/singollo.de/linux.singollo.de/public_html/data/cache/9/9d253d5f625ad9b6177a4f9098d81d19.metadata failed
ssl:postfix_und_ssl

Postfix und "self-signed" SSL-Zertifikat

Die billigste und einfachste Methode an SSL-Zertifikate zu kommen, ist ein eigenes Zertifikat zu erstellen. Es hat nur einen Nachteil, es ist nur soweit vertrauenswürdig wie der User auch dem Aussteller vertraut.

Script

Da es mehrere Schritte bedarf, um ein „self-signed certificate“, also ein selbstsigniertes Zertifikat, zu erstellen, lohnt sich das als Script zu erstellen. Zumal ja auch nach dem Ablauf des Zertifikates die ganze Prozedur von vorne beginnt.

Das Script nimmt die Domain des Rechners und ein Jahr als Defaultwerte an. Mit „-d“ übergibt man eine eigene Domain - es kann auch nur ein Dateiname sein, da die Domain nicht geprüft wird - und mit „-l“ die Laufzeit in Tagen. Daneben fragt openssl noch einige andere für das Zertifikat wichtige Dinge ab. Anschliessend werden die neuen Dateien nach /etc/postfix/certs/ kopiert.

create_sshkey_postfix.sh

#!/bin/sh
 
usage()
{
cat << EOF
usage: $0 options
 
This script creates a self-signed certificate for postfix.
 
OPTIONS:
   -h      Show this message
   -d      domain name [default: domain of this host]
   -l      days of lifetime [default: 365 days]
EOF
}
 
export DOMAIN=`hostname --fqdn -d`
DAYS=365
 
while getopts "h:d:l:" OPTION
do
    case $OPTION in
        d)
            echo "domain: $OPTARG"
            DOMAIN=$OPTARG
            ;;
        l)
            DAYS=$OPTARG
            ;;
        h)
            usage
            exit 1
            ;;
    esac
done
 
echo -e "\ncreate ssl-certificate for postfix using domain $DOMAIN and a lifetime of $DAYS days...\n"
 
export TMPDIR=`mktemp -d /tmp/cert.XXXXXX`
 
openssl req -new -nodes -out $TMPDIR/$DOMAIN-req.pem -keyout $TMPDIR/$DOMAIN-key.pem
openssl rsa -in $TMPDIR/$DOMAIN-key.pem -out $TMPDIR/$DOMAIN-new.key.pem
openssl x509 -in $TMPDIR/$DOMAIN-req.pem -out $TMPDIR/ca-cert -req -signkey $TMPDIR/$DOMAIN-new.key.pem -days $DAYS
 
mv $TMPDIR/$DOMAIN-new.key.pem /etc/postfix/certs/$DOMAIN.pem
cat $TMPDIR/ca-cert >> /etc/postfix/certs/cert.pem
 
/etc/init.d/postfix reload
 
rm -r $TMPDIR/*
rmdir $TMPDIR

Postfix

In Postfix sollte natürlich auch SSL/TLS konfiguriert werden. Hier muss smtpd_tls_key_file auf das zuvor erstelle Keyfile $DOMAIN.pem verweisen, cert.pem wird vom Script automatisch erzeugt.

main.cf

smtp_tls_loglevel = 2
smtp_tls_note_starttls_offer = yes
smtp_tls_session_cache_timeout = 3600s
smtpd_tls_CAfile = /etc/postfix/certs/cert.pem
smtpd_tls_cert_file = /etc/postfix/certs/cert.pem
smtpd_tls_key_file = /etc/postfix/certs/$DOMAIN.pem
smtpd_tls_loglevel = 2
smtpd_tls_received_header = yes
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_session_cache
smtpd_tls_session_cache_timeout = 3600s
smtpd_use_tls = yes
tls_random_source = dev:/dev/urandom
ssl/postfix_und_ssl.txt · Zuletzt geändert: 07.10.2012 18:31 (Externe Bearbeitung)