G'DDay, j'ai configuré OpenLDAP-Server Machine qui s'exécute sur le port 636. Je peux également Telnet à ce port à partir d'une autre machine client OpenLDAP. Pour sécuriser la connexion, j'ai créé un certificat auto-signé sur le serveur à l'aide de ce lien Entrez la description du lien ici puis copié le fichier de certificat au client.
Je me suis assuré que Selinux est désactivé sur la machine et le fichier client /etc/openldap/ldap.conf a l'option TLS_Reqcert Autoriser
La configuration détaillée de la machine client est la suivante:
# cat ldap.conf
URI ldap://ad.dfsi.dev:636
BASE dc=dfsi,dc=dev
TLS_CACERTDIR /etc/openldap/cacerts
TLS_REQCERT allow
et le fichier NSLCD:
# cat /etc/nslcd.conf
tls_reqcert allow
ssl start_tls
tls_cacertdir /etc/openldap/cacerts
tls_reqcert allow
Si je n'utilise pas SSL, le client LDAP a accès à tous les utilisateurs du LDAP. Mais lorsque je change la configuration pour utiliser TLS via AuthConfig-Tui, LDAPS: //ad.xx.Dev: 636, puis il échoue.
Les journaux disent que le client se connecte avec succès au serveur, puis le serveur dépose la connexion comme indiqué ici:
ldapsearch -x -d 1
ldap_create
ldap_sasl_bind
ldap_send_initial_request
ldap_new_connection 1 1 0
ldap_int_open_connection
ldap_connect_to_Host: TCP ad.dfsi.dev:636
ldap_new_socket: 3
ldap_prepare_socket: 3
ldap_connect_to_Host: Trying xx.xx.xx.xx:636
ldap_pvt_connect: fd: 3 tm: -1 async: 0
attempting to connect:
connect success
ldap_open_defconn: successful
ldap_send_server_request
ber_scanf fmt ({it) ber:
ber_scanf fmt ({i) ber:
ber_flush2: 14 bytes to sd 3
ldap_result ld 0x7f8f75e1d150 msgid 1
wait4msg ld 0x7f8f75e1d150 msgid 1 (infinite timeout)
wait4msg continue ld 0x7f8f75e1d150 msgid 1 all 1
** ld 0x7f8f75e1d150 Connections:
* Host: ad.dfsi.dev port: 636 (default)
refcnt: 2 status: Connected
last used: Tue Nov 29 15:01:28 2016
** ld 0x7f8f75e1d150 Outstanding Requests:
* msgid 1, origid 1, status InProgress
outstanding referrals 0, parent count 0
ld 0x7f8f75e1d150 request count 1 (abandoned 0)
** ld 0x7f8f75e1d150 Response Queue:
Empty
ld 0x7f8f75e1d150 response count 0
ldap_chkResponseList ld 0x7f8f75e1d150 msgid 1 all 1
ldap_chkResponseList returns ld 0x7f8f75e1d150 NULL
ldap_int_select
read1msg: ld 0x7f8f75e1d150 msgid 1 all 1
ber_get_next
ldap_err2string
ldap_result: Can't contact LDAP server (-1)
ldap_free_request (origid 1, msgid 1)
ldap_free_connection 1 1
ldap_free_connection: actually freed
Exécution OpenSSL montre que le client ne trouve aucun certificat sur le serveur, ce qui n'est pas raisonnable car j'ai tout fixé là-bas:
# openssl s_client -showcerts -connect ad.dfsi.dev:636
CONNECTED(00000003)
140330386184096:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:184:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 247 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---
nSS-PAM Authconfg-Tui génère son nouveau CACERTDIR à chaque fois, qui remplace la configuration précédente. Par conséquent, j'ai également placé le fichier de certificat dans le dossier/etc/openldap/cacerts.
Mon ordinateur client est Centos7 et Server est une instance EC2 Redhat.
Quelqu'un peut-il me donner des astuces pour résoudre ce problème?
[~ # ~] starttls [~ # ~ ~] signifie "TLS explicite" où la connexion est établie sur le port régulier = puis [~ # ~ ~] starttls [~ # ~ ~] La commande est envoyée pour initier [~ # ~ ] SSL [~ # ~] Poignée de main et commutateur au mode de protection.
Pour connecter, essayez add -Z
ou -ZZ
Passer à ldapsearch
:
ldapsearch -x -d 1 -ZZ
est d'obtenir le client à tilisez StartTls
J'ai peur que OpenSSL ne prend pas en charge les starttls pour le protocole LDAP (voir la page Homme man s_client
À propos -starttls
paramètre)
Juste pour être clair à ce sujet: Avez-vous configuré l'utilisation TLS dans le serveur OpenLDAP?
Vous devez toujours définir quelques paramètres. Pour référence, veuillez vérifier http://www.openldap.org/doc/admin24/tls.html#server%20configuration
De ma compréhension, votre client se connecte à la machine LDAP, mais la machine LDAP ne sait pas quel certificat pour livrer au client.
Pourriez-vous vérifier ou falsifier ma supposition?