4.5. Probando el servidor en modo seguro

En este punto ya se puede re/iniciar el demonio slapd con la nueva configuración de seguridad. Para ello emplee la orden /etc/init.d/slapd restart (en el Ejemplo 3.7, “Reinicio del demonio slapd se muestra como hacerlo).

En las siguientes secciones se verá la forma de comprobar que OpenLDAP se comporta como debe. Para cumplir este objetivo, se hará uso de las herramientas que vienen con OpenSSL para verificar las conexiones SSL y se realizarán búsquedas en el directorio LDAP.

4.5.1. Comprobando la conexión SSL

[Nota]Nota

Antes de ejecutar la siguiente orden, ha de asegurarse que valor tiene la variable TLSVerifyClient. Si su valor es demand, la orden no se ejecutará correctamente, ya que el cliente no se ha autentificado, como se requiere en la configuración de OpenLDAP.

Nótese que a la orden del Ejemplo 4.19, “Comprobando la conexión SSL sin autentificación del cliente” se le pasa como argumento[14] el certificado de la entidad certificadora del cliente. ¿Por qué se ha de especificar el certificado, si ya se ha configurado en el archivo ldap.conf? la razón es porque la orden que estamos ejecutando, es una orden dependiente de OpenSSL y no de OpenLDAP.

Ejemplo 4.19. Comprobando la conexión SSL sin autentificación del cliente

$ /usr/bin/openssl s_client -connect gsr.pt:636 -showcerts -state \
                            -CAfile /etc/ldap/ssl/cacert.pem
CONNECTED(00000003)
SSL_connect:before/connect initialization
SSL_connect:SSLv2/v3 write client hello A
SSL_connect:SSLv3 read server hello A
depth=1 /C=PT/ST=Braganca/L=Braganca/O=Companhia GSR/OU=Unidade de certificados/CN=gsr.pt
verify return:1
depth=0 /C=PT/ST=Braganca/L=Braganca/O=SubGSR/OU=Controle de \
                                              acesso/CN=gsr.pt/emailAddress=sergio@gsr.pt
verify return:1
SSL_connect:SSLv3 read server certificate A
SSL_connect:SSLv3 read server done A
SSL_connect:SSLv3 write client key exchange A
SSL_connect:SSLv3 write change cipher spec A
SSL_connect:SSLv3 write finished A
SSL_connect:SSLv3 flush data
SSL_connect:SSLv3 read finished A
---
Certificate chain
 0 s:/C=PT/ST=Braganca/L=Braganca/O=SubGSR/OU=Controle de \
                                           acesso/CN=gsr.pt/emailAddress=sergio@gsr.pt
   i:/C=PT/ST=Braganca/L=Braganca/O=Companhia GSR/OU=Unidade de certificados/CN=gsr.pt
-----BEGIN CERTIFICATE-----
MIIDkDCCAvmgAwIBAgIBATANBgkqhkiG9w0BAQQFADB+MQswCQYDVQQGEwJQVDER
MA8GA1UECBMIQnJhZ2FuY2ExETAPBgNVBAcTCEJyYWdhbmNhMRYwFAYDVQQKEw1D
b21wYW5oaWEgR1NSMSAwHgYDVQQLExdVbmlkYWRlIGRlIGNlcnRpZmljYWRvczEP
MA0GA1UEAxMGZ3NyLnB0MB4XDTA0MDkyMzE2MTYxMVoXDTA1MDkyMzE2MTYxMVow
gZAxCzAJBgNVBAYTAlBUMREwDwYDVQQIEwhCcmFnYW5jYTERMA8GA1UEBxMIQnJh
Z2FuY2ExDzANBgNVBAoTBlN1YkdTUjEbMBkGA1UECxMSQ29udHJvbGUgZGUgYWNl
c3NvMQ8wDQYDVQQDEwZnc3IucHQxHDAaBgkqhkiG9w0BCQEWDXNlcmdpb0Bnc3Iu
cHQwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKu8Yqp1rXZtBea+wre3Hyg6
ue0LshFqnSd7BmmJOhM9KYUNAoe3rM9GsAE6MMYuJROvbzW20Cyu+0Ikd/PH4abL
ADXKA76x2N0i3ta84pTUGq5Hg5UMoq4fw9P0HX7NzJxIKGM1XK97yb/4994rCWHG
QDB2459RKNBhshia2YpTAgMBAAGjggEJMIIBBTAJBgNVHRMEAjAAMCwGCWCGSAGG
+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU
jGYsPg9jL1Mp+ijqf1mkFkzffGwwgaoGA1UdIwSBojCBn4AU8TR3gKQ0S3HIv4Fs
3wyY02K3EL6hgYOkgYAwfjELMAkGA1UEBhMCUFQxETAPBgNVBAgTCEJyYWdhbmNh
MREwDwYDVQQHEwhCcmFnYW5jYTEWMBQGA1UEChMNQ29tcGFuaGlhIEdTUjEgMB4G
A1UECxMXVW5pZGFkZSBkZSBjZXJ0aWZpY2Fkb3MxDzANBgNVBAMTBmdzci5wdIIB
ADANBgkqhkiG9w0BAQQFAAOBgQAnQ1RGFN31LWRAtN1itHnWkzLUVg2ngGBqkxrC
AuP4M9lNMscLNCkBcpgaqsY0eFARDZKrMbqbPyc5GhmLoCzXylYEacSuzOXc+s7a
EaklDNvWjGCxhpoCBsXE2o+Opk2EBj3hzj7Z+tRb1UQ2T0iI0KvsA+WnT5Lojtuq
iX4C5A==
-----END CERTIFICATE-----
 1 s:/C=PT/ST=Braganca/L=Braganca/O=Companhia GSR/OU=Unidade de certificados/CN=gsr.pt
   i:/C=PT/ST=Braganca/L=Braganca/O=Companhia GSR/OU=Unidade de certificados/CN=gsr.pt
-----BEGIN CERTIFICATE-----
MIIDUDCCArmgAwIBAgIBADANBgkqhkiG9w0BAQQFADB+MQswCQYDVQQGEwJQVDER
MA8GA1UECBMIQnJhZ2FuY2ExETAPBgNVBAcTCEJyYWdhbmNhMRYwFAYDVQQKEw1D
b21wYW5oaWEgR1NSMSAwHgYDVQQLExdVbmlkYWRlIGRlIGNlcnRpZmljYWRvczEP
MA0GA1UEAxMGZ3NyLnB0MB4XDTA0MDkyMzE2MDY1NFoXDTA1MDkyMzE2MDY1NFow
fjELMAkGA1UEBhMCUFQxETAPBgNVBAgTCEJyYWdhbmNhMREwDwYDVQQHEwhCcmFn
YW5jYTEWMBQGA1UEChMNQ29tcGFuaGlhIEdTUjEgMB4GA1UECxMXVW5pZGFkZSBk
ZSBjZXJ0aWZpY2Fkb3MxDzANBgNVBAMTBmdzci5wdDCBnzANBgkqhkiG9w0BAQEF
AAOBjQAwgYkCgYEA15+Ciw1MUiRiY88v0rsAZDr+W/w4uQ3bx20v3ddE9Ok0mwv0
vE+DDJjKVUL4FK0rUe8ReDka4D3kB9j2vshWJjf2pA5nWtsoBgm5Dft0RIHM82GM
KCqeG5Lb7/21UaKloJNXTDPfh/HVydQzt2Uivbss3iUdGaDuKCt7IKynA/kCAwEA
AaOB3TCB2jAdBgNVHQ4EFgQU8TR3gKQ0S3HIv4Fs3wyY02K3EL4wgaoGA1UdIwSB
ojCBn4AU8TR3gKQ0S3HIv4Fs3wyY02K3EL6hgYOkgYAwfjELMAkGA1UEBhMCUFQx
ETAPBgNVBAgTCEJyYWdhbmNhMREwDwYDVQQHEwhCcmFnYW5jYTEWMBQGA1UEChMN
Q29tcGFuaGlhIEdTUjEgMB4GA1UECxMXVW5pZGFkZSBkZSBjZXJ0aWZpY2Fkb3Mx
DzANBgNVBAMTBmdzci5wdIIBADAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUA
A4GBAEyudW3FLXIFNbWQ7qJqEE6KhrsiSgR1+VjavJZJP0j2A5sf0vsp083mWJd5
yCWvgxb/Bcx2kbi9KjeP/dtYJM0drAQzFAW4CQQBNxsk3lNkEMot0/8epybirKVG
nThgAkySYQDPXfNEc5qSm2eAgLI7aElBLHQk2R6YVn26i0Gu
-----END CERTIFICATE-----
---
Server certificate
subject=/C=PT/ST=Braganca/L=Braganca/O=SubGSR/OU=Controle de \
                                             acesso/CN=gsr.pt/emailAddress=sergio@gsr.pt
issuer=/C=PT/ST=Braganca/L=Braganca/O=Companhia GSR/OU=Unidade de certificados/CN=gsr.pt
---
No client certificate CA names sent 1
---
SSL handshake has read 1933 bytes and written 340 bytes
---
New, TLSv1/SSLv3, Cipher is AES256-SHA
Server public key is 1024 bit
SSL-Session:
    Protocol  : TLSv1
    Cipher    : AES256-SHA
    Session-ID: C5101CF18CB3C821E1AD7C6CCD74693773C1AF75D2A209C6E12075B300A29CF2
    Session-ID-ctx:
    Master-Key: DB2972AF0D2AFF52B57861BBFE8164F5DE2347D3B5248C8D193C26F9B2DA93C6FFB16\
                                                           A705BAD5447716F7BAB2DA958D6
    Key-Arg   : None
    Start Time: 1095969142
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
1

Esta línea indica que el cliente no se ha autentificado ante el servidor.

[Nota]Nota

Normalmente, para finalizar la ejecución de la orden anterior, se ha de pulsar Ctrl+c. No se preocupe por ello.

Ahora se verá un ejemplo donde el cliente se autentifica ante el servidor:

Ejemplo 4.20. Comprobando la conexión SSL con autentificación del cliente

$ /usr/bin/openssl s_client -connect gsr.pt:636 -state \
                            -CAfile /etc/ldap/ssl/cacert.pem \
                            -cert /home/certs/ldap.cliente.cert.pem \
                            -key /home/certs/ldap.cliente.key.pem
CONNECTED(00000003)
SSL_connect:before/connect initialization
SSL_connect:SSLv2/v3 write client hello A
SSL_connect:SSLv3 read server hello A
depth=1 /C=PT/ST=Braganca/L=Braganca/O=Companhia GSR/OU=Unidade de certificados/CN=gsr.pt
verify return:1
depth=0 /C=PT/ST=Braganca/L=Braganca/O=SubGSR/OU=Controle de \
                                               acesso/CN=gsr.pt/emailAddress=sergio@gsr.pt
verify return:1
SSL_connect:SSLv3 read server certificate A
SSL_connect:SSLv3 read server certificate request A 1
SSL_connect:SSLv3 read server done A
SSL_connect:SSLv3 write client certificate A 2
SSL_connect:SSLv3 write client key exchange A
SSL_connect:SSLv3 write certificate verify A 3
SSL_connect:SSLv3 write change cipher spec A
SSL_connect:SSLv3 write finished A
SSL_connect:SSLv3 flush data
SSL_connect:SSLv3 read finished A
---
Certificate chain
 0 s:/C=PT/ST=Braganca/L=Braganca/O=SubGSR/OU=Controle de \
                                              acesso/CN=gsr.pt/emailAddress=sergio@gsr.pt
   i:/C=PT/ST=Braganca/L=Braganca/O=Companhia GSR/OU=Unidade de certificados/CN=gsr.pt
-----BEGIN CERTIFICATE-----
MIIDkDCCAvmgAwIBAgIBATANBgkqhkiG9w0BAQQFADB+MQswCQYDVQQGEwJQVDER
MA8GA1UECBMIQnJhZ2FuY2ExETAPBgNVBAcTCEJyYWdhbmNhMRYwFAYDVQQKEw1D
b21wYW5oaWEgR1NSMSAwHgYDVQQLExdVbmlkYWRlIGRlIGNlcnRpZmljYWRvczEP
MA0GA1UEAxMGZ3NyLnB0MB4XDTA0MDkyMzE2MTYxMVoXDTA1MDkyMzE2MTYxMVow
gZAxCzAJBgNVBAYTAlBUMREwDwYDVQQIEwhCcmFnYW5jYTERMA8GA1UEBxMIQnJh
Z2FuY2ExDzANBgNVBAoTBlN1YkdTUjEbMBkGA1UECxMSQ29udHJvbGUgZGUgYWNl
c3NvMQ8wDQYDVQQDEwZnc3IucHQxHDAaBgkqhkiG9w0BCQEWDXNlcmdpb0Bnc3Iu
cHQwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKu8Yqp1rXZtBea+wre3Hyg6
ue0LshFqnSd7BmmJOhM9KYUNAoe3rM9GsAE6MMYuJROvbzW20Cyu+0Ikd/PH4abL
ADXKA76x2N0i3ta84pTUGq5Hg5UMoq4fw9P0HX7NzJxIKGM1XK97yb/4994rCWHG
QDB2459RKNBhshia2YpTAgMBAAGjggEJMIIBBTAJBgNVHRMEAjAAMCwGCWCGSAGG
+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU
jGYsPg9jL1Mp+ijqf1mkFkzffGwwgaoGA1UdIwSBojCBn4AU8TR3gKQ0S3HIv4Fs
3wyY02K3EL6hgYOkgYAwfjELMAkGA1UEBhMCUFQxETAPBgNVBAgTCEJyYWdhbmNh
MREwDwYDVQQHEwhCcmFnYW5jYTEWMBQGA1UEChMNQ29tcGFuaGlhIEdTUjEgMB4G
A1UECxMXVW5pZGFkZSBkZSBjZXJ0aWZpY2Fkb3MxDzANBgNVBAMTBmdzci5wdIIB
ADANBgkqhkiG9w0BAQQFAAOBgQAnQ1RGFN31LWRAtN1itHnWkzLUVg2ngGBqkxrC
AuP4M9lNMscLNCkBcpgaqsY0eFARDZKrMbqbPyc5GhmLoCzXylYEacSuzOXc+s7a
EaklDNvWjGCxhpoCBsXE2o+Opk2EBj3hzj7Z+tRb1UQ2T0iI0KvsA+WnT5Lojtuq
iX4C5A==
-----END CERTIFICATE-----
 1 s:/C=PT/ST=Braganca/L=Braganca/O=Companhia GSR/OU=Unidade de certificados/CN=gsr.pt
   i:/C=PT/ST=Braganca/L=Braganca/O=Companhia GSR/OU=Unidade de certificados/CN=gsr.pt
-----BEGIN CERTIFICATE-----
MIIDUDCCArmgAwIBAgIBADANBgkqhkiG9w0BAQQFADB+MQswCQYDVQQGEwJQVDER
MA8GA1UECBMIQnJhZ2FuY2ExETAPBgNVBAcTCEJyYWdhbmNhMRYwFAYDVQQKEw1D
b21wYW5oaWEgR1NSMSAwHgYDVQQLExdVbmlkYWRlIGRlIGNlcnRpZmljYWRvczEP
MA0GA1UEAxMGZ3NyLnB0MB4XDTA0MDkyMzE2MDY1NFoXDTA1MDkyMzE2MDY1NFow
fjELMAkGA1UEBhMCUFQxETAPBgNVBAgTCEJyYWdhbmNhMREwDwYDVQQHEwhCcmFn
YW5jYTEWMBQGA1UEChMNQ29tcGFuaGlhIEdTUjEgMB4GA1UECxMXVW5pZGFkZSBk
ZSBjZXJ0aWZpY2Fkb3MxDzANBgNVBAMTBmdzci5wdDCBnzANBgkqhkiG9w0BAQEF
AAOBjQAwgYkCgYEA15+Ciw1MUiRiY88v0rsAZDr+W/w4uQ3bx20v3ddE9Ok0mwv0
vE+DDJjKVUL4FK0rUe8ReDka4D3kB9j2vshWJjf2pA5nWtsoBgm5Dft0RIHM82GM
KCqeG5Lb7/21UaKloJNXTDPfh/HVydQzt2Uivbss3iUdGaDuKCt7IKynA/kCAwEA
AaOB3TCB2jAdBgNVHQ4EFgQU8TR3gKQ0S3HIv4Fs3wyY02K3EL4wgaoGA1UdIwSB
ojCBn4AU8TR3gKQ0S3HIv4Fs3wyY02K3EL6hgYOkgYAwfjELMAkGA1UEBhMCUFQx
ETAPBgNVBAgTCEJyYWdhbmNhMREwDwYDVQQHEwhCcmFnYW5jYTEWMBQGA1UEChMN
Q29tcGFuaGlhIEdTUjEgMB4GA1UECxMXVW5pZGFkZSBkZSBjZXJ0aWZpY2Fkb3Mx
DzANBgNVBAMTBmdzci5wdIIBADAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUA
A4GBAEyudW3FLXIFNbWQ7qJqEE6KhrsiSgR1+VjavJZJP0j2A5sf0vsp083mWJd5
yCWvgxb/Bcx2kbi9KjeP/dtYJM0drAQzFAW4CQQBNxsk3lNkEMot0/8epybirKVG
nThgAkySYQDPXfNEc5qSm2eAgLI7aElBLHQk2R6YVn26i0Gu
-----END CERTIFICATE-----
---
Server certificate
subject=/C=PT/ST=Braganca/L=Braganca/O=SubGSR/OU=Controle de \
                                             acesso/CN=gsr.pt/emailAddress=sergio@gsr.pt
issuer=/C=PT/ST=Braganca/L=Braganca/O=Companhia GSR/OU=Unidade de certificados/CN=gsr.pt
---
Acceptable client certificate CA names 4
/C=PT/ST=Braganca/L=Braganca/O=Companhia GSR/OU=Unidade de certificados/CN=gsr.pt
---
SSL handshake has read 2072 bytes and written 2274 bytes
---
New, TLSv1/SSLv3, Cipher is AES256-SHA
Server public key is 1024 bit
SSL-Session:
    Protocol  : TLSv1
    Cipher    : AES256-SHA
    Session-ID: CE4D0BFD367AF2F4B2E51ECB8C48A1D1A3F5EC0F00346EF13551534C1F1CE8E1
    Session-ID-ctx:
    Master-Key: 4D9089B2602C0376B92079BA539D8D3F244B5CBF31A68FD3A51DDC801251AA16\
                                                 5C194DA63B1BFB7025D818F2480E6450
    Key-Arg   : None
    Start Time: 1095970126
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
1 2 3 4

Negociado extra relacionado con la comunicación SSL.

4.5.2. Uso de cifrado con las herramientas de OpenLDAP

OpenLDAP tiene varias herramientas, como son: ldapsearch, ldapadd, ldapmodify y ldapdelete. A continuación se verán algunos ejemplos de su uso, para ilustrar la comunicación mediante SSL y TLS.

Los ejemplos se centrarán en las búsquedas de varias entradas, previamente incorporadas al directorio.

4.5.2.1. Añadir datos al directorio

Lo primero que se va a hacer es añadir una serie de datos al directorio LDAP, sobre los cuales, posteriormente, se realizarán las búsquedas. Para ello, puede copiar el siguiente texto a un archivo denominado datos-iniciales.ldif, por ejemplo.

Tenga en cuenta que ha de eliminar cualquier espacio al inicio o al final de las líneas del ejemplo. Tampoco olvide adaptar el ejemplo que aquí se presenta a su configuración.

#datos-iniciales.ldif
dn: cn=sergio,dc=gsr,dc=pt
objectclass: organizationalRole
cn: sergio

dn: ou=unidade de contas,dc=gsr,dc=pt
objectclass: organizationalUnit
ou: unidade de contas
description: Organizacao de provas que contera ao administrador

dn: cn=senhor administrador,ou=unidade de contas,dc=gsr,dc=pt
objectclass: person
userPassword: chaveprova
description: Usuario de exemplo como administrador
cn: senhor administrador
sn: admin

Ahora se procederá a añadir estas entradas a la base de datos de LDAP, para ello haga uso del usuario administrador de su directorio LDAP.

Ejemplo 4.21. Incorporación de datos al directorio LDAP por medio de un archivo LDIF

$ /usr/bin/ldapadd -x -D "cn=admin,dc=gsr,dc=pt" -W -f datos-iniciales.ldif
Enter LDAP Password:[Clave]
adding new entry "cn=sergio,dc=gsr,dc=pt"

adding new entry "ou=unidade de contas,dc=gsr,dc=pt"

adding new entry "cn=senhor administrador,ou=unidade de contas,dc=gsr,dc=pt"

La orden anterior se ha realizado en texto plano, por lo que la transmisión de la clave del administrador del directorio LDAP se ha hecho sin ningún tipo de cifrado, como se puede apreciar en la siguiente captura de pantalla (debajo del color rojo aparece la clave del administrador):

Figura 4.1. Captura de la clave del administrador del directorio LDAP con ethereal

Captura de la clave del administrador del directorio LDAP con ethereal

Al comunicarse con el servidor LDAP sin hacer uso de cifrado, las claves de los usuarios viajan en texto plano, como puede apreciarse en esta captura de pantalla. Las líneas en rojo ocultan la clave del administrador del directorio LDAP capturada por el programa ethereal.

Para evitar esta situación, se puede hacer uso de SSL o TLS en las comunicaciones con el servidor LDAP. Las siguientes secciones explican como hacerlo:

4.5.2.1.1. Cómo activar el cifrado SSL en las comunicaciones con el servidor LDAP

Para asegurarse de que sus comunicaciones con el servidor LDAP utilizan SSL al hacer uso de las herramientas que incorpora OpenLDAP, ha de añadir el siguiente parámetro a sus órdenes: “-H ldaps://gsr.pt/”.

4.5.2.1.2. Cómo activar el cifrado TLS en las comunicaciones con el servidor LDAP

La principal diferencia entre una conexión SSL y una TLS, es que la primera siempre utilizará el cifrado en la conexión mientras que la segunda provee al cliente la opción de hacer uso de cifrado cuando lo desee.

Tenga en cuenta que por el simple hecho de acceder al servidor mediante ldap://:389 no asegura que la conexión haga uso de cifrado TLS, pero tampoco si accede mediante ldaps://. Para activar una conexión TLS tendrá que hace uso del parámetro “-Z” o “-ZZ”.

El parámetro “-ZZ” fuerza que la negociación TLS tenga éxito, mientras que el parámetro “-Z”, intenta habilitar el cifrado TLS, pero si no lo consigue, continua con la conexión sin TLS.

4.5.2.2. Búsquedas en el directorio

En esta sección se realizarán una serie de búsquedas en el directorio. El uso del parámetro -D “cn=admin,dc=gsr,dc=pt es necesario, debido a la restricción de acceso que se ha impuesto en el archivo slapd.conf:

access to *
        by dn="cn=admin,dc=gsr,dc=pt" write
        by dn="cn=readadmin,dc=gsr,dc=pt" read 1
        by self write
        by users read
        by anonymous auth

Ejemplo 4.22. Devuelve todas las entradas del directorio

Si el cliente se encuentra en la misma máquina que el servidor:

$ /usr/bin/ldapsearch -x -b 'dc=gsr,dc=pt' -D "cn=admin,dc=gsr,dc=pt" -W \
                      '(objectclass=*)'

Si el cliente se encuentra en una máquina distinta al servidor y se quiere hacer uso de SSL :

$ /usr/bin/ldapsearch -x -b 'dc=gsr,dc=pt' -D "cn=admin,dc=gsr,dc=pt" -W \
                      '(objectclass=*)' -H ldaps://gsr.pt/

Si el cliente se encuentra en una máquina distinta al servidor y se quiere hacer uso de TLS :

$ /usr/bin/ldapsearch -x -b 'dc=gsr,dc=pt' -D "cn=admin,dc=gsr,dc=pt" -W \
                      '(objectclass=*)' -H ldap://gsr.pt/ -ZZ

Después de ejecutar las órdenes anteriores, la salida debería ser similar a:

Enter LDAP Password:[Clave]
# extended LDIF
#
# LDAPv3
# base <dc=gsr,dc=pt> with scope sub
# filter: (objectclass=*)
# requesting: ALL
#

# gsr.pt
dn: dc=gsr,dc=pt
objectClass: top
objectClass: dcObject
objectClass: organization
o: gsr.pt
dc: gsr

# admin, gsr.pt
dn: cn=admin,dc=gsr,dc=pt
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e2NyeXB0fXkxcFlKZVpQQzQ5Qlk=

# sergio, gsr.pt
dn: cn=sergio,dc=gsr,dc=pt
objectClass: organizationalRole
cn: sergio

# unidade de contas, gsr.pt
dn: ou=unidade de contas,dc=gsr,dc=pt
objectClass: organizationalUnit
ou: unidade de contas
description: Organizacao de provas que contera ao administrador

# senhor administrador, unidade de contas, gsr.pt
dn: cn=senhor administrador,ou=unidade de contas,dc=gsr,dc=pt
objectClass: person
userPassword:: Y2hhdmVwcm92YQ==
description: Usuario de exemplo como administrador
cn: senhor administrador
sn: admin

# search result
search: 3
result: 0 Success

# numResponses: 6
# numEntries: 5

Ejemplo 4.23. Devuelve algunas entradas del directorio

$ /usr/bin/ldapsearch -x -b 'cn=sergio,dc=gsr,dc=pt' -D "cn=admin,dc=gsr,dc=pt" \
                      '(objectclass=*)' -H ldaps://gsr.pt/ -w clave
# extended LDIF
#
# LDAPv3
# base <cn=sergio,dc=gsr,dc=pt> with scope sub
# filter: (objectclass=*)
# requesting: ALL
#

# sergio, gsr.pt
dn: cn=sergio,dc=gsr,dc=pt
objectClass: organizationalRole
cn: sergio

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1
$ 
$ /usr/bin/ldapsearch -x -b 'ou=unidade de contas,,dc=gsr,dc=pt' \
                      -D "cn=admin,dc=gsr,dc=pt" '(objectclass=*)' -H ldaps://gsr.pt/ -w clave
# extended LDIF
#
# LDAPv3
# base <ou=unidade de contas,dc=gsr,dc=pt> with scope sub
# filter: (objectclass=*)
# requesting: ALL
#

# unidade de contas, gsr.pt
dn: ou=unidade de contas,dc=gsr,dc=pt
objectClass: organizationalUnit
ou: unidade de contas
description: Organizacao de provas que contera ao administrador

# senhor administrador, unidade de contas, gsr.pt
dn: cn=senhor administrador,ou=unidade de contas,dc=gsr,dc=pt
objectClass: person
userPassword:: Y2hhdmVwcm92YQ==
description: Usuario de exemplo como administrador
cn: senhor administrador
sn: admin

# search result
search: 2
result: 0 Success

# numResponses: 3
# numEntries: 2

Como ha podido comprobar, la comunicación con el servidor LDAP se realiza satisfactoriamente, bien sea utilizando cifrado bien sin el.



[14] -CAfile