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

OpenSSL, OpenLDAP e debian e 'l'enumerazione dei certificati'...



Problema che ho sempre avuto, ma che in sarge avevo in qualche modo
lasciato latente, ma che ora con etch non posso più eliminare.

Il problema è dovuto a uno strano (a mio avviso) comportamento di
openssl, di cui non riesco a capacitarmi, e su cui chiedo lumi.


Premessa. OpenSSL tiene i certificati in /etc/ssl/certs, e in teoria ci
accede tramite 'hash', ovvero in quella cartella tutti i certificati
hanno un link (simbolico) identico all'hash, link che è possibile
ricreare in ogni momento con lo scriptillo c_rehash.

OpenLDAP utilizza, se istruita, i certificati; posso abiltare il server
slapd all'uso mettendo mano in /etc/ldap/slapd.conf, ma posso anche
indicare alcuni parametri di default usati dalla libreria libopenldap,
nel file /etc/ldap/ldap.conf.
Questo file, che ha un override per utente in .ldaprc, è usato da tools
come ldapsearch, ma anche da altre applicazioni, come ad esempio GQ
oppure il modulo LDAP di php. Diciamo che è usato implicitamente da
tutte le applicazioni linkate con libopenldap.
Alcune hanno degli override specifici (ad esempio libpam-ldap e
libnss-ldap, nei file di configurazione posso usare queste
impostazioni di default della librerie oppure definire esplicitamente,
con una sintassi solo leggermente differente.).

In particolare per quello che devo fare mi interessano le opzioni
TLS_CACERT e TLS_CACERTDIR, che permettono di indicare il file che
contiene la RootCA usata oppure la directory dove sono presenti le
RootCA.
La manpage (ldap.conf(5)) dice:

       TLS_CACERT <filename>
              Specifies  the  file  that  contains certificates for all of the
              Certificate Authorities the client will recognize.

       TLS_CACERTDIR <path>
              Specifies the path of  a  directory  that  contains Certificate
              Authority   certificates   in  separate  individual files.  The
              TLS_CACERT is always used before TLS_CACERTDIR.

Ora, io mi sono fatto una (fake) CA interna per la mia rete privata, e
se per alcune cose è bene che io indichi esplicitamente TLS_CACERT,
forzando libopenldap e libopenssl ad usare una e una sola particolare
CA, per altre (in particolare ldapsearch, GQ e PHP, ma va! ;) necessito
di poter avere acceso al maggior numero di CA possibili, gradirei senza
dover mettere mano ai file di configurazione.

Il problema è che se setto solo TLS_CACERTDIR (ovviamente a
/etc/ssl/certs) e utilizzo un certo numero di certificati (ad esempio,
installo il pacchetto ca-certificates) ad ogni connessione al server
LDAP è come se i certificati venissero 'enumerati': la CPU schizza al
100% per una manciata di secondi, e sto parlando di xeon dual core, non
PII riciclati.
Se per GQ la cosa è accettabile (la connessione è persistente, mi
capita una volta all'inizio) ovviamente per PHP è assolutamente
inaccettabile, visto che ci sono riconnessioni continue.

Ovviamente ho provato a seguire il consiglio della manpage ('The
TLS_CACERT is always used before TLS_CACERTDIR') e definire sia
TLS_CACERT alla CA locale e quindi TLS_CACERTDIR, ma il risultato non
cambia (usando la CA locale, per la altre a questo punto la cosa
potrebbe essere anche accettabile, è evento raro).


Finora ho risolto aspettando (sulla mia macchina client, che è una
Ubuntu ma sempre li siamo), oppure eliminando (spostando) tutti i
certificati che non mi servono da /etc/ssl/certs, visto che il tempo di
elaborazione dipende dal numero di certificati, e se sono fino a una
mezza dozzina non è minimamente avvertibile.
Ma ovviamente basta che mi dimentichi di un aggiornamento di
ca-certificates, o che per sbaglio una dipendenza me lo installi e non
ci faccia caso, e ho piantato un server.

Ho provato a giocare anche con il parametro TLS_REQCERT, senza
apparente differenza alcuna.


Qualcuno mi sa illuminare? Grazie.


PS: per i debianisti... mi piacerebbe anche capire, se di baco si
tratta, di chi è il baco: la cosa mi si presenta solo con openldap, ma
potrebbe essere proprio per l'uso particolare che fa della librerie
openssl...

-- 
  Ho ancora la forza di starvi a raccontare
  le mie storie di sempre, di come posso amare		(F. Guccini)



Reply to: