|
5 | 5 | BASE_PATH="$( cd `dirname $0`/../test/fixtures/openldap && pwd )"
|
6 | 6 | SEED_PATH="$( cd `dirname $0`/../test/fixtures && pwd )"
|
7 | 7 |
|
8 |
| -dpkg -s slapd time ldap-utils ||\ |
9 |
| - DEBIAN_FRONTEND=noninteractive sudo -E apt-get install -y --force-yes slapd time ldap-utils |
| 8 | +dpkg -s slapd time ldap-utils gnutls-bin ssl-cert > /dev/null ||\ |
| 9 | + DEBIAN_FRONTEND=noninteractive sudo -E apt-get install -y --force-yes slapd time ldap-utils gnutls-bin ssl-cert |
10 | 10 |
|
11 | 11 | sudo /etc/init.d/slapd stop
|
12 | 12 |
|
@@ -45,3 +45,67 @@ sudo /etc/init.d/slapd start
|
45 | 45 | -f $SEED_PATH/seed.ldif
|
46 | 46 |
|
47 | 47 | sudo rm -rf $TMPDIR
|
| 48 | + |
| 49 | +# SSL |
| 50 | + |
| 51 | +sudo sh -c "certtool --generate-privkey > /etc/ssl/private/cakey.pem" |
| 52 | + |
| 53 | +sudo sh -c "cat > /etc/ssl/ca.info <<EOF |
| 54 | +cn = rubyldap |
| 55 | +ca |
| 56 | +cert_signing_key |
| 57 | +EOF" |
| 58 | + |
| 59 | +# Create the self-signed CA certificate: |
| 60 | +sudo certtool --generate-self-signed \ |
| 61 | +--load-privkey /etc/ssl/private/cakey.pem \ |
| 62 | +--template /etc/ssl/ca.info \ |
| 63 | +--outfile /etc/ssl/certs/cacert.pem |
| 64 | + |
| 65 | +# Make a private key for the server: |
| 66 | +sudo certtool --generate-privkey \ |
| 67 | +--bits 1024 \ |
| 68 | +--outfile /etc/ssl/private/ldap01_slapd_key.pem |
| 69 | + |
| 70 | +sudo sh -c "cat > /etc/ssl/ldap01.info <<EOF |
| 71 | +organization = Example Company |
| 72 | +cn = ldap01.example.com |
| 73 | +tls_www_server |
| 74 | +encryption_key |
| 75 | +signing_key |
| 76 | +expiration_days = 3650 |
| 77 | +EOF" |
| 78 | + |
| 79 | +# Create the server certificate |
| 80 | +sudo certtool --generate-certificate \ |
| 81 | + --load-privkey /etc/ssl/private/ldap01_slapd_key.pem \ |
| 82 | + --load-ca-certificate /etc/ssl/certs/cacert.pem \ |
| 83 | + --load-ca-privkey /etc/ssl/private/cakey.pem \ |
| 84 | + --template /etc/ssl/ldap01.info \ |
| 85 | + --outfile /etc/ssl/certs/ldap01_slapd_cert.pem |
| 86 | + |
| 87 | +sudo ldapmodify -Y EXTERNAL -H ldapi:/// <<EOF | true |
| 88 | +dn: cn=config |
| 89 | +add: olcTLSCACertificateFile |
| 90 | +olcTLSCACertificateFile: /etc/ssl/certs/cacert.pem |
| 91 | +- |
| 92 | +add: olcTLSCertificateFile |
| 93 | +olcTLSCertificateFile: /etc/ssl/certs/ldap01_slapd_cert.pem |
| 94 | +- |
| 95 | +add: olcTLSCertificateKeyFile |
| 96 | +olcTLSCertificateKeyFile: /etc/ssl/private/ldap01_slapd_key.pem |
| 97 | +EOF |
| 98 | + |
| 99 | +# LDAP over TLS/SSL (ldaps://) is deprecated in favour of StartTLS. The latter |
| 100 | +# refers to an existing LDAP session (listening on TCP port 389) becoming |
| 101 | +# protected by TLS/SSL whereas LDAPS, like HTTPS, is a distinct |
| 102 | +# encrypted-from-the-start protocol that operates over TCP port 636. But we |
| 103 | +# enable it for testing here. |
| 104 | +sudo sed -i -e 's|^SLAPD_SERVICES="\(.*\)"|SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"|' /etc/default/slapd |
| 105 | + |
| 106 | +sudo adduser openldap ssl-cert |
| 107 | +sudo chgrp ssl-cert /etc/ssl/private/ldap01_slapd_key.pem |
| 108 | +sudo chmod g+r /etc/ssl/private/ldap01_slapd_key.pem |
| 109 | +sudo chmod o-r /etc/ssl/private/ldap01_slapd_key.pem |
| 110 | + |
| 111 | +sudo service slapd restart |
0 commit comments