123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- #!/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
|