Files
Ertuğrul Erata 087fcd1c3e works for openldap
2015-07-03 16:32:16 +03:00

112 lines
2.6 KiB
Bash

#!/bin/sh
# Last update 20050401 - Christian Zoffoli <xmerlin@gentoo.org>
VERSION="0.3"
openssl="/usr/bin/openssl"
opensslopts=""
ldapconfdir="/etc/openldap/ssl"
pemfile="${ldapconfdir}/ldap.pem"
randfile="${ldapconfdir}/ldap.rand"
cfgfile="${ldapconfdir}/ldap.cfg"
function fixperms {
chown root:ldap ${ldapconfdir} -R
find ${ldapconfdir} -type f -exec chmod 640 \{\} \;
chmod 750 ${ldapconfdir}
}
if [ ! -x ${openssl} ]; then
exit 0
fi
if [ ! -d ${ldapconfdir} ]; then
mkdir -p ${ldapconfdir}
fi
fixperms
if [ -f ${pemfile} ]; then
echo "${pemfile} already exist, dying"
exit 0
fi
dd if=/dev/urandom of=$randfile count=1 2>/dev/null
echo ""
echo "______________________________________________________________________${T_ME}"
echo ""
echo "Creating self-signed certificate -- Version ${VERSION}"
echo ""
echo "______________________________________________________________________${T_ME}"
echo ""
COMMONNAME=`hostname`
if [ ! -n "$COMMONNAME" ]; then
COMMONNAME="www.openldap.org"
fi
if [ -f ${cfgfile} ]; then
echo "${cfgfile} found, would you like to use it ? (y/n)"
read answer
case "$answer" in
y|Y)
opensslopts="-batch"
;;
n|N)
cat >${cfgfile} <<EOT
[ req ]
default_bits = 1024
distinguished_name = req_DN
RANDFILE = ${randfile}
[ req_DN ]
countryName = "1. Country Name (2 letter code)"
countryName_default = "US"
countryName_min = 2
countryName_max = 2
stateOrProvinceName = "2. State or Province Name (full name) "
stateOrProvinceName_default = ""
localityName = "3. Locality Name (eg, city) "
localityName_default = ""
0.organizationName = "4. Organization Name (eg, company) "
0.organizationName_default = "LDAP Server"
organizationalUnitName = "5. Organizational Unit Name (eg, section) "
organizationalUnitName_default = "For testing purposes only"
commonName = "6. Common Name (eg, CA name) "
commonName_max = 64
commonName_default = "${COMMONNAME}"
emailAddress = "7. Email Address (eg, name@FQDN)"
emailAddress_max = 40
emailAddress_default = ""
EOT
;;
*)
echo "Wrong answer, retry!"
exit 1
;;
esac
fi
echo ""
${openssl} req -config ${cfgfile} ${opensslopts} -new -rand ${randfile} -x509 -nodes -out ${pemfile} -keyout ${pemfile} -days 999999
if [ $? -ne 0 ]; then
echo "cca:Error: Failed to generate certificate " 1>&2
exit 1
else
echo -e "\nCertificate creation done!"
fi
if [ -f ${randfile} ]; then
rm -f ${randfile}
fi
if [ -f ${pemfile} ]; then
fixperms
fi