<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.0.6603.0">
<TITLE>Automated script for complementing SSL HowTo</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->

<P><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">FDS Folks,</FONT>
</P>

<P><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">I wrote this script for the benefits of all.</FONT>
</P>

<P><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">Gary</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">Content of cr_ssl_certs_fds1ldap.sh</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">#! /bin/sh</FONT>

<BR><FONT SIZE=2 FACE="Arial">#</FONT>

<BR><FONT SIZE=2 FACE="Arial"># cr_ssl_certs_fds1ldap.sh</FONT>

<BR><FONT SIZE=2 FACE="Arial">#</FONT>

<BR><FONT SIZE=2 FACE="Arial"># 1) Make sure 'root' is used to run this script</FONT>

<BR><FONT SIZE=2 FACE="Arial"># 2) Make sure /home/ldap/dirmgr.pwd contains password of cn=Direcyory Manager</FONT>

<BR><FONT SIZE=2 FACE="Arial">#</FONT>

<BR><FONT SIZE=2 FACE="Arial">#set -vx</FONT>

<BR><FONT SIZE=2 FACE="Arial">IS_ROOT_UID=`id | grep "uid=0(root)"`</FONT>

<BR><FONT SIZE=2 FACE="Arial">if [ ! -n "$IS_ROOT_UID" ]; then</FONT>

<BR><FONT SIZE=2 FACE="Arial">   echo "Please run this script as root"</FONT>

<BR><FONT SIZE=2 FACE="Arial">   exit 1</FONT>

<BR><FONT SIZE=2 FACE="Arial">fi</FONT>

<BR><FONT SIZE=2 FACE="Arial">if [ ! -f /home/ldap/dirmgr.pwd ]; then</FONT>

<BR><FONT SIZE=2 FACE="Arial">   echo "Please setup /home/ldap/dirmgr.pwd."</FONT>

<BR><FONT SIZE=2 FACE="Arial">   exit 1</FONT>

<BR><FONT SIZE=2 FACE="Arial">else</FONT>

<BR><FONT SIZE=2 FACE="Arial">   chmod 600 /home/ldap/dirmgr.pwd</FONT>

<BR><FONT SIZE=2 FACE="Arial">fi</FONT>

<BR><FONT SIZE=2 FACE="Arial"># Pls customize the followings</FONT>

<BR><FONT SIZE=2 FACE="Arial">HOST="ldap1"</FONT>

<BR><FONT SIZE=2 FACE="Arial">DOMAIN="example.com"</FONT>

<BR><FONT SIZE=2 FACE="Arial">BASEDN="dc=example,dc=com"</FONT>

<BR><FONT SIZE=2 FACE="Arial">FQDN="$HOST.$DOMAIN"</FONT>

<BR><FONT SIZE=2 FACE="Arial">ORG="Example Companies"</FONT>

<BR><FONT SIZE=2 FACE="Arial">LOCALITY="NewYork City"</FONT>

<BR><FONT SIZE=2 FACE="Arial">STATE="NewYork"</FONT>

<BR><FONT SIZE=2 FACE="Arial">COUNTRY="US"</FONT>

<BR><FONT SIZE=2 FACE="Arial">SLAPD_OWNER="nobody"</FONT>

<BR><FONT SIZE=2 FACE="Arial">SLAPD_GROUP="nobody"</FONT>

<BR><FONT SIZE=2 FACE="Arial">FDS1_PATH=/opt/fedora-ds</FONT>

<BR><FONT SIZE=2 FACE="Arial">LD_LIBRARY_PATH=$FDS1_PATH/shared/lib:$FDS1_PATH/lib</FONT>

<BR><FONT SIZE=2 FACE="Arial">export LD_LIBRARY_PATH</FONT>

<BR><FONT SIZE=2 FACE="Arial">PATH=$FDS1_PATH/shared/bin:$PATH; export PATH</FONT>

<BR><FONT SIZE=2 FACE="Arial">cd $FDS1_PATH/alias</FONT>

<BR><FONT SIZE=2 FACE="Arial">DOW=`date | cut -d' ' -f1`</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "Backing up existing *.db (if any) to backup_$DOW."</FONT>

<BR><FONT SIZE=2 FACE="Arial">mkdir -p backup_$DOW >/dev/null 2>/dev/null</FONT>

<BR><FONT SIZE=2 FACE="Arial">cp -p *.db backup_$DOW >/dev/null 2>/dev/null</FONT>

<BR><FONT SIZE=2 FACE="Arial">/bin/rm -f *.db >/dev/null 2>/dev/null</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "secretpwd" >pwdfile.txt</FONT>

<BR><FONT SIZE=2 FACE="Arial">chmod 600 pwdfile.txt</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "dsadasdasdasdadasdasdasdasdsadfwerwerjfdksdjfksdlfhjsdk" >noise.txt</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "Creating new security key3.db/cert8.db pair."</FONT>

<BR><FONT SIZE=2 FACE="Arial">../shared/bin/certutil -N -d . -f pwdfile.txt</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "Generating encryption key."</FONT>

<BR><FONT SIZE=2 FACE="Arial">../shared/bin/certutil -G -d . -z noise.txt -f pwdfile.txt</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "Generating self-signed CA certificate."</FONT>

<BR><FONT SIZE=2 FACE="Arial">../shared/bin/certutil -S -n "CA certificate" -s "cn=CAcert" -x \</FONT>

<BR><FONT SIZE=2 FACE="Arial">   -t "CT,," -m 1000 -v 120 -d . -z noise.txt -f pwdfile.txt</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "Generating self-signed Server certificate."</FONT>

<BR><FONT SIZE=2 FACE="Arial">../shared/bin/certutil -S -n "Server-Cert" -s \</FONT>

<BR><FONT SIZE=2 FACE="Arial">   "cn=$FQDN,O=$ORG,L=$LOCALITY,ST=$STATE,C=$COUNTRY" -c "CA certificate" \</FONT>

<BR><FONT SIZE=2 FACE="Arial">   -t "u,u,u" -m 1001 -v 120 -d . -z noise.txt -f pwdfile.txt</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "Renaming and linking modified security DBs."</FONT>

<BR><FONT SIZE=2 FACE="Arial">mv -f key3.db slapd-$HOST-key3.db</FONT>

<BR><FONT SIZE=2 FACE="Arial">mv -f cert8.db slapd-$HOST-cert8.db</FONT>

<BR><FONT SIZE=2 FACE="Arial">ln -s slapd-$HOST-key3.db key3.db</FONT>

<BR><FONT SIZE=2 FACE="Arial">ln -s slapd-$HOST-cert8.db cert8.db</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "Setting the correct ownership of security DBs"</FONT>

<BR><FONT SIZE=2 FACE="Arial">chown $SLAPD_OWNER:$SLAPD_GROUP *.db</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "Self-signed CA and SSL Server certs generated."</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo ""</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "The following commands are OPTIONAL."</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "They are for backing up CA and Server Certs in PK12 format,"</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "exporting the CA Cert in ASCII format or DER format, and"</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "importing the CA Cert into the Admin Server"</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo ""</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "---Start of OPTIONAL commands---"</FONT>

<BR><FONT SIZE=2 FACE="Arial">cat <<EOF >optional_cmds.txt</FONT>

<BR><FONT SIZE=2 FACE="Arial">../shared/bin/pk12util -d . -P slapd-$HOST- -o cacert.pfx -n "CA certificate"</FONT>

<BR><FONT SIZE=2 FACE="Arial">../shared/bin/pk12util -d . -P slapd-$HOST- -o servercert.pfx -n "Server-Cert"</FONT>

<BR><FONT SIZE=2 FACE="Arial">../shared/bin/certutil -L -d . -P slapd-$HOST- -n "CA certificate" \</FONT>

<BR><FONT SIZE=2 FACE="Arial">   -a > cacert.asc</FONT>

<BR><FONT SIZE=2 FACE="Arial">../shared/bin/certutil -L -d . -P slapd-$HOST- -n "CA certificate" \</FONT>

<BR><FONT SIZE=2 FACE="Arial">   -r > cacert.der</FONT>

<BR><FONT SIZE=2 FACE="Arial">../shared/bin/certutil -A -d . -P admin-serv-$HOST- -n "CA certificate" \</FONT>

<BR><FONT SIZE=2 FACE="Arial">   -t "CT,," -a -i cacert.asc</FONT>

<BR><FONT SIZE=2 FACE="Arial">EOF</FONT>

<BR><FONT SIZE=2 FACE="Arial">cat optional_cmds.txt</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "---End of OPTIONAL commands---"</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo ""</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "Modifying server SSL configurations."</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "NOTE: changes will be saved to config/dse.ldif when slapd is shutdown"</FONT>

<BR><FONT SIZE=2 FACE="Arial">cat <<EOF >/tmp/ssl_enable.ldif</FONT>

<BR><FONT SIZE=2 FACE="Arial">dn: cn=encryption,cn=config</FONT>

<BR><FONT SIZE=2 FACE="Arial">changetype: modify</FONT>

<BR><FONT SIZE=2 FACE="Arial">replace: nsSSL3</FONT>

<BR><FONT SIZE=2 FACE="Arial">nsSSL3: on</FONT>

<BR><FONT SIZE=2 FACE="Arial">-</FONT>

<BR><FONT SIZE=2 FACE="Arial">replace: nsSSLClientAuth</FONT>

<BR><FONT SIZE=2 FACE="Arial">nsSSLClientAuth: allowed</FONT>

<BR><FONT SIZE=2 FACE="Arial">-</FONT>

<BR><FONT SIZE=2 FACE="Arial">add: nsSSL3Ciphers</FONT>

<BR><FONT SIZE=2 FACE="Arial">nsSSL3Ciphers: -rsa_null_md5,+rsa_rc4_128_md5,+rsa_rc4_40_md5,+rsa_rc2_40_md5,</FONT>

<BR><FONT SIZE=2 FACE="Arial"> +rsa_des_sha,+rsa_fips_des_sha,+rsa_3des_sha,+rsa_fips_3des_sha,+fortezza,</FONT>

<BR><FONT SIZE=2 FACE="Arial"> +fortezza_rc4_128_sha,+fortezza_null,+tls_rsa_export1024_with_rc4_56_sha,</FONT>

<BR><FONT SIZE=2 FACE="Arial"> +tls_rsa_export1024_with_des_cbc_sha</FONT>

<BR><FONT SIZE=2 FACE="Arial">-</FONT>

<BR><FONT SIZE=2 FACE="Arial">add: nsKeyfile</FONT>

<BR><FONT SIZE=2 FACE="Arial">nsKeyfile: alias/slapd-$HOST-key3.db</FONT>

<BR><FONT SIZE=2 FACE="Arial">-</FONT>

<BR><FONT SIZE=2 FACE="Arial">add: nsCertfile</FONT>

<BR><FONT SIZE=2 FACE="Arial">nsCertfile: alias/slapd-$HOST-cert8.db</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">dn: cn=config</FONT>

<BR><FONT SIZE=2 FACE="Arial">changetype: modify</FONT>

<BR><FONT SIZE=2 FACE="Arial">add: nsslapd-security</FONT>

<BR><FONT SIZE=2 FACE="Arial">nsslapd-security: on</FONT>

<BR><FONT SIZE=2 FACE="Arial">-</FONT>

<BR><FONT SIZE=2 FACE="Arial">replace: nsslapd-ssl-check-hostname</FONT>

<BR><FONT SIZE=2 FACE="Arial">nsslapd-ssl-check-hostname: off</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">EOF</FONT>

<BR><FONT SIZE=2 FACE="Arial">../shared/bin/ldapmodify -D "cn=Directory Manager" -w `cat /home/ldap/dirmgr.pwd` -f /tmp/ssl_enable.ldif</FONT>

<BR><FONT SIZE=2 FACE="Arial">cat <<EOF >/tmp/delRSA.ldif</FONT>

<BR><FONT SIZE=2 FACE="Arial">cn=RSA,cn=encryption,cn=config</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">EOF</FONT>

<BR><FONT SIZE=2 FACE="Arial">../shared/bin/ldapdelete -c -D "cn=Directory Manager" -w `cat /home/ldap/dirmgr.pwd` -f /tmp/delRSA.ldif</FONT>

<BR><FONT SIZE=2 FACE="Arial">[ $? -eq 0 ] && echo "deleting cn=RSA,cn=encryption,cn=config"</FONT>

<BR><FONT SIZE=2 FACE="Arial">cat <<EOF >/tmp/addRSA.ldif</FONT>

<BR><FONT SIZE=2 FACE="Arial">dn: cn=RSA,cn=encryption,cn=config</FONT>

<BR><FONT SIZE=2 FACE="Arial">objectclass: top</FONT>

<BR><FONT SIZE=2 FACE="Arial">objectclass: nsEncryptionModule</FONT>

<BR><FONT SIZE=2 FACE="Arial">cn: RSA</FONT>

<BR><FONT SIZE=2 FACE="Arial">nsSSLPersonalitySSL: Server-Cert</FONT>

<BR><FONT SIZE=2 FACE="Arial">nsSSLToken: internal (software)</FONT>

<BR><FONT SIZE=2 FACE="Arial">nsSSLActivation: on</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">EOF</FONT>

<BR><FONT SIZE=2 FACE="Arial">../shared/bin/ldapmodify -a -c -D "cn=Directory Manager" -w `cat /home/ldap/dirmgr.pwd` -f /tmp/addRSA.ldif</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "Creating a pin.txt for auto-starting of slapd."</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "Internal (Software) Token:`cat pwdfile.txt`" >slapd-$HOST-pin.txt</FONT>

<BR><FONT SIZE=2 FACE="Arial">chown $SLAPD_OWNER:$SLAPD_GROUP slapd-$HOST-pin.txt</FONT>

<BR><FONT SIZE=2 FACE="Arial">chmod 400 slapd-$HOST-pin.txt</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo ""</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "IMPORTANT NOTES:"</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo ""</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "1. How to check if SSL Configurations are done properly?"</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "You may view config/dse.ldif after shutting down slapd"</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "to verify all the required SSL configurations are there."</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo ""</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "2. How to fix slapd startup issue due to mis-configuration of SSL?"</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "If for any reason slapd fails to start due to SSL issue,"</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "you may edit config/dse.ldif after shutting down slapd"</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "and revert back to non-SSL configs."</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "i.e. set nsSSL3: off, nsslapd-security: off"</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo "and then try to restart slapd."</FONT>

<BR><FONT SIZE=2 FACE="Arial">echo ""</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">=======Sample run.</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial"># ./cr_ssl_certs_fds1ldap.sh</FONT>

<BR><FONT SIZE=2 FACE="Arial">Backing up existing *.db (if any) to backup_Wed.</FONT>

<BR><FONT SIZE=2 FACE="Arial">Creating new security key3.db/cert8.db pair.</FONT>

<BR><FONT SIZE=2 FACE="Arial">Generating encryption key.</FONT>
</P>
<BR>

<P><FONT SIZE=2 FACE="Arial">Generating key.  This may take a few moments...</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">Generating self-signed CA certificate.</FONT>
</P>
<BR>

<P><FONT SIZE=2 FACE="Arial">Generating key.  This may take a few moments...</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">Generating self-signed Server certificate.</FONT>
</P>
<BR>

<P><FONT SIZE=2 FACE="Arial">Generating key.  This may take a few moments...</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">Renaming and linking modified security DBs.</FONT>

<BR><FONT SIZE=2 FACE="Arial">Setting the correct ownership of security DBs</FONT>

<BR><FONT SIZE=2 FACE="Arial">Self-signed CA and SSL Server certs generated.</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">The following commands are OPTIONAL.</FONT>

<BR><FONT SIZE=2 FACE="Arial">They are for backing up CA and Server Certs in PK12 format,</FONT>

<BR><FONT SIZE=2 FACE="Arial">exporting the CA Cert in ASCII format or DER format, and</FONT>

<BR><FONT SIZE=2 FACE="Arial">importing the CA Cert into the Admin Server</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">---Start of OPTIONAL commands---</FONT>

<BR><FONT SIZE=2 FACE="Arial">../shared/bin/pk12util -d . -P slapd-nj1net200plmon- -o cacert.pfx -n "CA certificate"</FONT>

<BR><FONT SIZE=2 FACE="Arial">../shared/bin/pk12util -d . -P slapd-nj1net200plmon- -o servercert.pfx -n "Server-Cert"</FONT>

<BR><FONT SIZE=2 FACE="Arial">../shared/bin/certutil -L -d . -P slapd-nj1net200plmon- -n "CA certificate"    -a > cacert.asc</FONT>

<BR><FONT SIZE=2 FACE="Arial">../shared/bin/certutil -L -d . -P slapd-nj1net200plmon- -n "CA certificate"    -r > cacert.der</FONT>

<BR><FONT SIZE=2 FACE="Arial">../shared/bin/certutil -A -d . -P admin-serv-nj1net200plmon- -n "CA certificate"    -t "CT,," -a -i cacert.asc</FONT>

<BR><FONT SIZE=2 FACE="Arial">---End of OPTIONAL commands---</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">Modifying server SSL configurations.</FONT>

<BR><FONT SIZE=2 FACE="Arial">NOTE: changes will be saved to config/dse.ldif when slapd is shutdown</FONT>

<BR><FONT SIZE=2 FACE="Arial">modifying entry cn=encryption,cn=config</FONT>

<BR><FONT SIZE=2 FACE="Arial">ldap_modify: Type or value exists</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">deleting cn=RSA,cn=encryption,cn=config</FONT>

<BR><FONT SIZE=2 FACE="Arial">adding new entry cn=RSA,cn=encryption,cn=config</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">Creating a pin.txt for auto-starting of slapd.</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">IMPORTANT NOTES:</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">1. How to check if SSL Configurations are done properly?</FONT>

<BR><FONT SIZE=2 FACE="Arial">You may view config/dse.ldif after shutting down slapd</FONT>

<BR><FONT SIZE=2 FACE="Arial">to verify all the required SSL configurations are there.</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">2. How to fix slapd startup issue due to mis-configuration of SSL?</FONT>

<BR><FONT SIZE=2 FACE="Arial">If for any reason slapd fails to start due to SSL issue,</FONT>

<BR><FONT SIZE=2 FACE="Arial">you may edit config/dse.ldif after shutting down slapd</FONT>

<BR><FONT SIZE=2 FACE="Arial">and revert back to non-SSL configs.</FONT>

<BR><FONT SIZE=2 FACE="Arial">i.e. set nsSSL3: off, nsslapd-security: off</FONT>

<BR><FONT SIZE=2 FACE="Arial">and then try to restart slapd.</FONT>
</P>
<BR>

</BODY>
</HTML>