File: //sbin/mkdhparams
#! /bin/sh
#
# Copyright 2013-2014 Double Precision, Inc. See COPYING for
# distribution information.
#
# Run this script monthly to generate DH parameters.
# Override from the environment
if test "gnutls" = "openssl"
then
LIBRESSL=0
/usr/bin/openssl version | grep LibreSSL 1>/dev/null
if test $? = 0
then
LIBRESSL=1
fi
fi
if test "$TLS_DHPARAMS" = ""
then
TLS_DHPARAMS="/etc/courier/dhparams.pem"
fi
if test -f $TLS_DHPARAMS
then
if test "`find $TLS_DHPARAMS -mtime +25 -print `" = ""
then
# Less than 25 days old
exit 0
fi
fi
set -e
install -b -m 0600 -o "courier" /dev/null $TLS_DHPARAMS.tmp
umask 022
BITS="$DH_BITS"
if test "gnutls" = "openssl"
then
if test "$BITS" = ""
then
BITS=2048
fi
if test "$LIBRESSL" = 0
then
dd if=/dev/urandom of=$TLS_DHPARAMS.rand.tmp count=1 2>/dev/null
/usr/bin/openssl dhparam -rand $TLS_DHPARAMS.rand.tmp -outform PEM $BITS >$TLS_DHPARAMS.tmp
rm -f $TLS_DHPARAMS.rand.tmp
else
/usr/bin/openssl dhparam -outform PEM $BITS >$TLS_DHPARAMS.tmp
fi
mv -f $TLS_DHPARAMS.tmp $TLS_DHPARAMS
else
if test "$BITS" = ""
then
BITS=high
fi
/usr/bin/certtool --generate-dh-params --sec-param $BITS >$TLS_DHPARAMS.tmp
mv -f $TLS_DHPARAMS.tmp $TLS_DHPARAMS
fi