summaryrefslogtreecommitdiff
path: root/localmksslcerts
blob: 2c03cb5ae533916ebf81830ec60e389e7cdd5843 (plain)
  1. #!/bin/sh
  2. #
  3. # /usr/local/sbin/localmkmailcerts
  4. # Copyright 2001-2002 Jonas Smedegaard <dr@jones.dk>
  5. #
  6. # $Id: localmksslcerts,v 1.2 2002-03-29 01:11:20 jonas Exp $
  7. #
  8. # Generate certificates for mail servers
  9. # Based on uw-imapd-ssl post-install script
  10. #
  11. prg=$(basename $0)
  12. copyright="(C) 2001-2002 Jonas Smedegaard <dr@jones.dk>"
  13. usage() {
  14. echo "$prg, $copyright
  15. Usage: $prg --fqdn <FQDN> [--issuer <issuer>] --daemon <daemon> [...] [--force]
  16. or: $prg -d <daemon> [-d <daemon>...] [-i <issuer>] [-f] <FQDN>
  17. or: $prg <FQDN> <daemon> [<daemon>...] [-f]
  18. Options:
  19. -h, --fqdn Fully Qualified Domain Name for this host.
  20. -d, --daemon Daemon(s) in need for a certificate
  21. (separate certificate is generated for each daemon)
  22. -i, --issuer Email address of the person responsible for the certificate
  23. -f, --force Force overwriting existing certificate
  24. -h, --help This help text
  25. If issuer is not given, \"postmaster@<localdomain>\" is used."
  26. exit 1
  27. }
  28. # Set some defaults
  29. CWD=`pwd`
  30. PATH=$PATH:/usr/bin/ssl
  31. COUNTRY='.'
  32. STATE='.'
  33. LOCALITY='.'
  34. DAYS2EXPIRE=365
  35. fqdn=''
  36. daemons=''
  37. issuer=''
  38. force=''
  39. args=''
  40. while [ $# -gt 0 ]; do
  41. case $1 in
  42. --fqdn) fqdn="$2"; shift;;
  43. --daemon|-d) daemons="$daemons$2 "; shift;;
  44. --issuer|-i) issuer="$2";;
  45. --force|-f) force=1;;
  46. -*) usage;;
  47. *) args="$args$1 ";;
  48. esac
  49. shift
  50. done
  51. set -- $args
  52. if [ -z $issuer ]; then
  53. DOMAINNAME=`hostname -d`
  54. ISSUER="postmaster@$DOMAINNAME"
  55. fi
  56. if [ -z $fqdn ]; then
  57. fqdn=$1
  58. shift
  59. fi
  60. set -- $daemons $args
  61. if [ $# -lt 1 ]; then
  62. echo "Too few parameters!"
  63. usage
  64. fi
  65. cd /etc/ssl/certs
  66. for daemon in $@; do
  67. if [ -f $daemon.pem ]; then
  68. if [ -n $force ]; then
  69. rm -f `openssl x509 -noout -hash < $daemon.pem`.0
  70. rm -f $daemon.pem
  71. else
  72. echo "You already have /etc/ssl/certs/$daemon.pem - exiting...!"
  73. exit 1
  74. fi
  75. else
  76. echo -n "Generating $daemon certificate..."
  77. openssl req -new -x509 -nodes -out $daemon.pem -keyout $daemon.pem -days $DAYS2EXPIRE > /dev/null 2>&1 <<+
  78. $COUNTRY
  79. $STATE
  80. $LOCALITY
  81. $fqdn
  82. $fqdn
  83. $fqdn
  84. $issuer
  85. +
  86. ln -sf $daemon.pem `openssl x509 -noout -hash < $daemon.pem`.0
  87. echo "Done!"
  88. fi
  89. chown root.root /etc/ssl/certs/$daemon.pem
  90. chmod 0640 /etc/ssl/certs/$daemon.pem
  91. done
  92. cd $CWD