openLDAP ssl/tls Centos 6.3
Pavel Kankovsky
peak na argo.troja.mff.cuni.cz
Pondělí Březen 10 17:24:36 CET 2014
On Mon, 10 Mar 2014, Kateřina Bubeníčková wrote:
> Z toho jsem pochopila, že potřebuju certifikáty moznss.
Potřebujete pro server veřejný a privátní klíč a k tomu veřejnému klíči
ještě certifikát, který bude pro klienty akceptovatelný.
A protože se červení klobouci nějak rozhodli, že mají *knihovnu* NSS (má
kořeny u Netscapu, teď patří k Mozille, proto se asi v té chybové hlášce
objevuje "moznss") raději než OpenSSL, tak to svému OpenLDAPu musíte
předložit ve formě databáze NSS.
> 1. postup
> [...]
> Protože už se snažím nějakou dobu, vygenerovala jsem db znovu pomocí
> #/usr/libexec/openldap/create-certdb.sh
To by mělo, jestli ten skript dobře chápu, vyrobit novou db a přidat do ní
standardní sadu kořenových CA (ve formě modulu, takže nejsou vidět při
použití certutil -L; tohle bych si dovolil považovat za poněkud
kontroverzní nastavení a v mnoha situacích by mohlo být bezpečnější ten
zvěřinec předdefinovaných CA zase rychle poslat do háje).
> /etc/openldap/slapd.d/cn=config/olcDatabase={0}config.ldif
> olcTLSCACertificatePath: /etc/pki/tls/certs
> olcTLSCertificateKeyFile: "OpenLDAP Server"
> olcTLSCertificateFile: /etc/openldap/certs/password
Ta konfigurace je dost podivná, protože položky, které byly zjevně
vymyšleny v kontextu OpenSSL (kde jsou to všechno jména souborů), byly
nějak recyklovány pro použití s NSS (kde je jméno adresáře s databází,
nickname záznamu pro serverový klíč a certifikát, a soubor s heslem
k databázi).
Řekl bych, že tam máte špatně cestu k databázi (/etc/pki/tls/certs místo
/etc/openldap/certs) a zbylé položky jsou asi obráceně: oba návody, na
které odkazujete, mají v "olcTLSCertificateKeyFile" soubor s heslem a
v "olcTLSCertificateFile" nick.
> Ale nevím, co znamená CTU,u,u, a jestli ta databáze obsahuje
> všechno, co má.
Význam písmenek je možno nalézt v dokumentaci certutil:
<https://developer.mozilla.org/en-US/docs/NSS/tools/NSS_Tools_certutil>
(je to třikrát, protože poprvé je to pro použití v SSL/TLS, podruhé pro
S/MIME tj. emaily a potřetí pro podepisování kódu).
> Zkusila bych třeba http://www.bradchen.com/blog/2012/08/openldap-tls-issue,
> ale zase u prvního příkazu nevím, co to mám napsat jako "My Issuer",
> jestli je to někde důležité.
Ta část s "CN=My Issuer" vytvoří soukromou kořenovou certifikační autoritu
(klíče a self-signed cert.) s uvedeným jménem.
V podstatě máte asi tři možné varianty postupu:
1. Pokud máte už nějakou existující certifikační autoritu a fungující PKI,
tak použijete certutil -R k vygenerování klíčů a žádosti o certifikát
s vhodným DN, podle žádosti necháte vystavit certifikát a ten
naimportujete pomocí certutil -A. Možná bude potřeba i naimportovat
i certifikát té CA (případně dalších nadřízených). Toto je ideově
nejsprávnější varianta.
2. Vyrobíte si vlastní CA jen pro potřebu LDAPu. Pak můžete postupovat
podle zmíněného návodu, akorát bych doporučil použít nějaká
civilizovanější DN. Třeba něco jako "CN=ca, DC=mydomain, DC=cz" (je-li
"mydomain.cz" vaše doména) místo toho "CN=My Issuer". Podobně jméno pro
server.
3. Možná by fungovalo i použití self-signed certifikátu, který je sám sobě
certifikační autoritou, tj. certutil -S s vhodnými dalšími parametry.
Pro pojmenování platí přiměřeně to, co je napsáno v předchozí možnosti.
Důležité je, že pak musíte klientům vysvětlit, že mají serverovému
certifikátu věřit, jinak je to celé na nic. V případech 1 a 2 je potřeba
jim někam dát certifikáty použitých CA, ve třetím případě přímo serverový
certifikát. Pokud jsou klienti zase OpenLDAP na CentOSu 6, tak
pravděpodobně používají stejnou db jako server (jenom by jim bez hesla
měl zůstat utajen privátní klíč).
> 2.postup:
> [...]
> /etc/openldap/slapd.d/cn=config/olcDatabase={0}config.ldif
> olcTLSCACertificateFile: /etc/pki/tls/certs/ca-bundle.crt
> olcTLSCACertificatePath: /etc/pki/tls/certs.bk2
> olcTLSCertificateFile: /etc/pki/tls/certs.bk2/ldap1_privkey.pem
> olcTLSCertificateKeyFile: /etc/pki/tls/certs.bk2/ldap1_privkey.key.pem
Tohle vypadá jako nastavení pro OpenSSL, a tudíž to takto fungovat ani
nemůže.
--
Pavel Kankovsky aka Peak / Jeremiah 9:21 \
"For death is come up into our MS Windows(tm)..." \ 21st century edition /
Další informace o konferenci Linux