Benutzer-Werkzeuge

Webseiten-Werkzeuge


Writing /srv/www/htdocs/udo/singollo.de/linux.singollo.de/public_html/data/cache/b/bb3b4ddca7dc0257b12d0e539698a504.metadata failed
ssl:apache2_und_ssl

Apache2 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/apache2/ssl.*/ kopiert.

create_sshkey_www.sh

#!/bin/sh
 
usage()
{
cat << EOF
usage: $0 options
 
This script creates a self-signed certificate for apache2.
 
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 apache2 using domain $DOMAIN and a lifetime of $DAYS days...\n"
 
export TMPDIR=`mktemp -d /tmp/cert.XXXXXX`
 
openssl genrsa -out $TMPDIR/$DOMAIN.key 2048
openssl req -new -key $TMPDIR/$DOMAIN.key -out $TMPDIR/$DOMAIN.csr
openssl x509 -req -days $DAYS -in $TMPDIR/$DOMAIN.csr -signkey $TMPDIR/$DOMAIN.key -out $TMPDIR/$DOMAIN.crt
 
cp $TMPDIR/$DOMAIN.key /etc/apache2/ssl.key/
cp $TMPDIR/$DOMAIN.csr /etc/apache2/ssl.csr/
cp $TMPDIR/$DOMAIN.crt /etc/apache2/ssl.crt/
 
/etc/init.d/apache2 reload
 
rm -r $TMPDIR/*
rmdir $TMPDIR

Apache2

Für die jeweilige Domain, kann auch ein virtueller Host (vhost) sein, werden nur drei Zeilen benötigt, um SSL zu aktivieren. Zusätzlich muss auch das SSL-Modul mod_ssl aktiviert sein. Ein apache2ctl -M | grep ssl_module sollte zeigen, ob es geladen wurde.

SSLEngine on
SSLCertificateFile /etc/apache2/ssl.crt/$DOMAIN.crt
SSLCertificateKeyFile /etc/apache2/ssl.key/$DOMAIN.key

Optional sind folgende Zeilen:

SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown

Weitere Zeilen wie SSLCACertificateFile oder SSLCertificateChainFile werden nicht benötigt bzw. sind Variablen für die Nutzung eines echten Zertifikates (z.B. ca-certs).

ssl/apache2_und_ssl.txt · Zuletzt geändert: 07.10.2012 18:31 (Externe Bearbeitung)