#!/bin/sh # Copyright (c) Thomas Bez 2004 # See http://www.bez.tedesca.net/homeoff/antispam.html for details. CA=ca ### Hier anpassen! WEBSERVER=www.mydomain.net MAILSERVER=mail.mydomain.net MAILSERVER_INTRA=mail.intra.mydomain.net POPSERVER=pop.mydomain.net # gen_CA nur beim ersten Mal auf "yes" setzen! gen_CA=yes gen_WEBSERVER=yes gen_MAILSERVER=yes gen_MAILSERVER_INTRA=yes gen_POPSERVER=yes keysize=2048 expiry=3653 expiry_ca=3653 cd /etc/ssl || exit 1 mkdir private mkdir certs if [ $gen_CA = yes ]; then echo Zuerst erzeugen wir eine private Certification Authority CA. echo Eine möglichst lange und sichere Passphrase benutzen! openssl genrsa -des3 -out $CA.key 4096 echo Make .crt: openssl req -new -x509 -days $expiry_ca -key $CA.key -out $CA.crt echo Make .p12: openssl pkcs12 -export -clcerts -in $CA.crt -inkey $CA.key -out $CA.p12 chmod 400 $CA.key mv $CA.key private chmod 444 $CA.crt $CA.p12 mv $CA.crt $CA.p12 certs fi rm -fr ca.db.index ca.db.index.old ca.db.serial ca.db.serial.old ca.db.certs touch ca.db.index echo 01 >ca.db.serial mkdir ca.db.certs cat >ca.config <$MAILSERVER_INTRA.fingerprint cat $MAILSERVER_INTRA.fingerprint fi if [ $gen_WEBSERVER = yes ]; then echo Schlüssel für Webserver: echo $WEBSERVER openssl genrsa -des3 -out $WEBSERVER.tmp $keysize openssl rsa -in $WEBSERVER.tmp -out $WEBSERVER.key openssl req -new -days $expiry -key $WEBSERVER.key -out $WEBSERVER.csr echo Alle Schlüssel .csr signieren wir mit unserer eigenen CA. Achtung: lange Passphrase des CA benutzen! echo Als CommonName CN angeben: $WEBSERVER openssl ca -config ca.config -out $WEBSERVER.crt -infiles $WEBSERVER.csr openssl verify -CAfile certs/$CA.crt $WEBSERVER.crt echo Schlüssel für Clients, z.B. Outlook Express: openssl pkcs12 -export -clcerts -in $WEBSERVER.crt -inkey $WEBSERVER.key -out $WEBSERVER.p12 fi if [ $gen_POPSERVER = yes ]; then echo PEM-Schlüssel für Courier generieren. echo $POPSERVER openssl genrsa -des3 -out $POPSERVER.tmp $keysize openssl rsa -in $POPSERVER.tmp -out $POPSERVER.key openssl req -new -days $expiry -key $POPSERVER.key -out $POPSERVER.csr echo Alle Schlüssel .csr signieren wir mit unserer eigenen CA. Achtung: lange Passphrase des CA benutzen! echo Als CommonName CN angeben: $POPSERVER openssl ca -config ca.config -out $POPSERVER.crt -infiles $POPSERVER.csr openssl verify -CAfile certs/$CA.crt $POPSERVER.crt echo PEM-Schlüssel erzeugen: cat $POPSERVER.key $POPSERVER.crt >$POPSERVER.pem openssl gendh >>$POPSERVER.pem echo Schlüssel für Clients, z.B. Outlook Express: openssl pkcs12 -export -clcerts -in $POPSERVER.crt -inkey $POPSERVER.key -out $POPSERVER.p12 fi rm *.tmp chmod 400 *.key *.csr *.pem chmod 444 *.crt chmod 444 *.p12 rm -fr ca.db.index ca.db.index.old ca.db.serial ca.db.serial.old ca.db.certs rm -f ca.config mv *.key *.pem private mv *.crt *.csr *.p12 certs tar cfv sslkeys.tar private/*.key private/*.pem certs/*.crt certs/*.p12 echo "transfer following files to the external mailserver:" certs/$CA.crt certs/$MAILSERVER.crt certs/$MAILSERVER_INTRA.crt private/$MAILSERVER.key echo "transfer following files to the internal mailserver:" certs/$CA.crt certs/$MAILSERVER.crt certs/$MAILSERVER_INTRA.crt private/$MAILSERVER_INTRA.key echo "do not forget to notify postfix on the external mailserver of the fingerprint in" certs/$MAILSERVER_INTRA.fingerprint