[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

SLAPD + SAMBA + TLS



Un saluto a tutta la lista. Ho un problema relativo a slapd + samba e tls.
Procediamo per passi: installo tutto il software necessario, verifico che tutta la suite dei programmi funziona correttamente senza l'utilizzo del tls e il tutto funziona alla perfezione senza riscontro di errori. Procedo allora con la creazione dei certificati per l'utilizzo del TLS, configuro slapd, libnss-ldap, libpam_ldap, ldaputil, smbldap-tools e samba. Slapd si avvia con successo, le ldaputil funzionano a dovere, libnss-ldap e pam_ldap funzionano correttamente, anche gli smbldap-tools funzionano a dovere, quando pero vado ad utilizzare samba con l'utilizzo di ldap ssl = start_tls ricevo il seguente errore:

2009/08/01 17:45:15, 10] lib/ldap_debug_handler.c:samba_ldap_log_print_fn(26)
 [LDAP] ldap_parse_extended_result
[2009/08/01 17:45:15, 10] lib/ldap_debug_handler.c:samba_ldap_log_print_fn(26)
 [LDAP] ldap_parse_result
[2009/08/01 17:45:15, 10] lib/ldap_debug_handler.c:samba_ldap_log_print_fn(26)
 [LDAP] ldap_msgfree
[2009/08/01 17:45:15, 10] lib/ldap_debug_handler.c:samba_ldap_log_print_fn(26)
 [LDAP] TLS: can't connect: Error in the push function..
[2009/08/01 17:45:15,  0] lib/smbldap.c:smb_ldap_start_tls(596)
[2009/08/01 17:45:15, 10] lib/ldap_debug_handler.c:samba_ldap_log_print_fn(26)
 [LDAP] ldap_err2string
 Failed to issue the StartTLS instruction: Connect error

Premetto che questo errore lo ricevo solo quando samba viene avviato all'avvio del sistema.


Effettuando diverse prove, inserendo l'avvio di ldapsearch -x -ZZ -d -1 dopo l'avvio di slapd (nello stesso script d'avvio), anche con ldapsearch, ottengo come errore TLS: can't connect: Error in the push function.. Ho provato a inserire anche una sleep dopo l'avvio di slapd ma non ci sono risultati esaustivi.

Altra prova è stata quella di avviare solamente slapd all'avvio, quindi dopo l'avvio del sistema, mi loggo, lancio samba manualmente con /etc/init.d/samba start e samba riesce a connettersi senza nessun tipo problema e il log di slapd riporta:

Aug  1 17:51:15 PDC slapd[1891]: conn=1 op=0 STARTTLS
Aug  1 17:51:15 PDC slapd[1891]: conn=1 op=0 RESULT oid= err=0 text=
Aug 1 17:51:16 PDC slapd[1891]: conn=1 fd=14 TLS established tls_ssf=256 ssf=256

Qualcuno ha qualche idea da cosa possa dipendere?

Cmq successivamente ho fatto altre prove. Ho impostato in slapd.conf TLSVerifyClient da demand a never e tutto funziona, compreso samba, sempre in TLS. Premetto che per verificare l'utilizzo del tls con samba e gli altri tool, ho impostato "security ssf=256 update_ssf=256", infatti con un'ulteriore prova, commentando in smb.conf l'opzione ldap ssl = start_tls il log di samba riportava che il server richiedeva confidenzialità. Detto ciò, la mia domanda è: perchè all'avvio di debian, samba non riesce a connettersi a slapd, riportando gli errori citati, mentre se lo avvio manualmente non ricevo nessun tipo di errore?

Inoltre scorrendo il log di slapd, ho notato che ad ogni operazione su slapd, esempio: una query con ldapsearch, un getent passwd, un smbldap-useradd, lo stesso avvio di samba, mi riporta il seguente errore:


Aug 1 18:05:38 PDC slapd[2002]: connection_read(14): unable to get TLS client DN, error=-4 id=1

Aug 1 18:06:35 PDC slapd[2023]: connection_read(14): unable to get TLS client DN, error=49 id=1

Il primo lo ricevo quando il TLSVerifyClient e su demand, il secondo con never (hanno codice d'errore diversi)

Nel man di slapd.conf c'è scritto:

TLSVerifyClient <level>
Specifies what checks to perform on client certificates in an incoming TLS session, if any. The <level> can be specified as one of the following
             keywords:
....
demand | hard | true
These keywords are all equivalent, for compatibility reasons. The client certificate is requested. If no certificate is provided, or a bad certificate is provided, the session is immediately
                    terminated.

e' possibile che il primo problema, quello dell'avvio di samba che non riesce a negoziare la sessione TLS, e che l' "unable to get TLS client DN", siano dovuti ad una creazione errata dei certificati?

I certificati vengono creati con:

/usr/lib/ssl/misc/CA.pl -newca
openssl req -newkey rsa:1024 -nodes -keyout key.pem -out newreq.pem
/usr/lib/ssl/misc/CA.pl -sign


Grazie in anticipo. Saluti.


Reply to: