summaryrefslogtreecommitdiff
path: root/localmksslcerts
blob: 36bcf9c264d557fd9feaa80e7ec7972e4d95f982 (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.1 2002-03-29 01:04:11 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 -f <FQDN> -d [-i <issuer>] <daemon> [-d <daemon>...] [-f]
  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. If issuer is not given, \"postmaster@<localdomain>\" is used."
  25. exit 1
  26. }
  27. # Set some defaults
  28. CWD=`pwd`
  29. PATH=$PATH:/usr/bin/ssl
  30. COUNTRY='.'
  31. STATE='.'
  32. LOCALITY='.'
  33. DAYS2EXPIRE=365
  34. fqdn=''
  35. daemons=''
  36. issuer=''
  37. force=''
  38. args=''
  39. while [ $# -gt 0 ]; do
  40. case $1 in
  41. --fqdn|-h) fqdn="$2"; shift;;
  42. --daemon|-d) daemons="$daemons$2 "; shift;;
  43. --issuer|-i) issuer="$2";;
  44. --force|-f) force=1;;
  45. -*) usage;;
  46. *) args="$args$1 ";;
  47. esac
  48. shift
  49. done
  50. set -- $args
  51. if [ -z $issuer ]; then
  52. DOMAINNAME=`hostname -d`
  53. ISSUER="postmaster@$DOMAINNAME"
  54. fi
  55. if [ -z $fqdn ]; then
  56. fqdn=$1
  57. shift
  58. fi
  59. set -- $daemons $args
  60. if [ $# -lt 1 ]; then
  61. echo "Too few parameters!"
  62. usage
  63. fi
  64. cd /etc/ssl/certs
  65. for daemon in $@; do
  66. if [ -f $daemon.pem ]; then
  67. if [ -n $force ]; then
  68. rm -f `openssl x509 -noout -hash < $daemon.pem`.0
  69. rm -f $daemon.pem
  70. else
  71. echo "You already have /etc/ssl/certs/$daemon.pem - exiting...!"
  72. exit 1
  73. fi
  74. else
  75. echo -n "Generating $daemon certificate..."
  76. openssl req -new -x509 -nodes -out $daemon.pem -keyout $daemon.pem -days $DAYS2EXPIRE > /dev/null 2>&1 <<+
  77. $COUNTRY
  78. $STATE
  79. $LOCALITY
  80. $fqdn
  81. $fqdn
  82. $fqdn
  83. $issuer
  84. +
  85. ln -sf $daemon.pem `openssl x509 -noout -hash < $daemon.pem`.0
  86. echo "Done!"
  87. fi
  88. chown root.root /etc/ssl/certs/$daemon.pem
  89. chmod 0640 /etc/ssl/certs/$daemon.pem
  90. done
  91. cd $CWD