diff options
author | Jonas Smedegaard <dr@jones.dk> | 2002-03-29 01:04:11 +0000 |
---|---|---|
committer | Jonas Smedegaard <dr@jones.dk> | 2002-03-29 01:04:11 +0000 |
commit | 70cf8b66dd751a24662076a1245d2fe9ebaae9f5 (patch) | |
tree | 9506683cfc69e05a22a46e50ed5ee050c4d9f2fd /localmksslcerts | |
parent | cae7fac7fa8d8f0b4aa35b9d7aaa0c781e43d6ec (diff) |
Rename localmkmailcerts to localmksslcerts. Major rewrite.
Diffstat (limited to 'localmksslcerts')
-rwxr-xr-x | localmksslcerts | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/localmksslcerts b/localmksslcerts new file mode 100755 index 0000000..36bcf9c --- /dev/null +++ b/localmksslcerts @@ -0,0 +1,104 @@ +#!/bin/sh +# +# /usr/local/sbin/localmkmailcerts +# Copyright 2001-2002 Jonas Smedegaard <dr@jones.dk> +# +# $Id: localmksslcerts,v 1.1 2002-03-29 01:04:11 jonas Exp $ +# +# Generate certificates for mail servers +# Based on uw-imapd-ssl post-install script +# + +prg=$(basename $0) +copyright="(C) 2001-2002 Jonas Smedegaard <dr@jones.dk>" + +usage() { +echo "$prg, $copyright + +Usage: $prg --fqdn <FQDN> [--issuer <issuer>] --daemon <daemon> [...] [--force] + or: $prg -f <FQDN> -d [-i <issuer>] <daemon> [-d <daemon>...] [-f] + or: $prg <FQDN> <daemon> [<daemon>...] [-f] + +Options: + -h, --fqdn Fully Qualified Domain Name for this host. + -d, --daemon Daemon(s) in need for a certificate + (separate certificate is generated for each daemon) + -i, --issuer Email address of the person responsible for the certificate + -f, --force Force overwriting existing certificate + +If issuer is not given, \"postmaster@<localdomain>\" is used." +exit 1 +} + +# Set some defaults +CWD=`pwd` +PATH=$PATH:/usr/bin/ssl +COUNTRY='.' +STATE='.' +LOCALITY='.' +DAYS2EXPIRE=365 + +fqdn='' +daemons='' +issuer='' +force='' +args='' +while [ $# -gt 0 ]; do + case $1 in + --fqdn|-h) fqdn="$2"; shift;; + --daemon|-d) daemons="$daemons$2 "; shift;; + --issuer|-i) issuer="$2";; + --force|-f) force=1;; + -*) usage;; + *) args="$args$1 ";; + esac + shift +done +set -- $args + +if [ -z $issuer ]; then + DOMAINNAME=`hostname -d` + ISSUER="postmaster@$DOMAINNAME" +fi + +if [ -z $fqdn ]; then + fqdn=$1 + shift +fi +set -- $daemons $args + +if [ $# -lt 1 ]; then + echo "Too few parameters!" + usage +fi + +cd /etc/ssl/certs +for daemon in $@; do + if [ -f $daemon.pem ]; then + if [ -n $force ]; then + rm -f `openssl x509 -noout -hash < $daemon.pem`.0 + rm -f $daemon.pem + else + echo "You already have /etc/ssl/certs/$daemon.pem - exiting...!" + exit 1 + fi + else + echo -n "Generating $daemon certificate..." + openssl req -new -x509 -nodes -out $daemon.pem -keyout $daemon.pem -days $DAYS2EXPIRE > /dev/null 2>&1 <<+ +$COUNTRY +$STATE +$LOCALITY +$fqdn +$fqdn +$fqdn +$issuer ++ + ln -sf $daemon.pem `openssl x509 -noout -hash < $daemon.pem`.0 + echo "Done!" + fi + + chown root.root /etc/ssl/certs/$daemon.pem + chmod 0640 /etc/ssl/certs/$daemon.pem +done + +cd $CWD |