Systém LAI - předregistrace požadavků o certifikát
Technická zpráva CESNETu
číslo 36/2005
k dispozici též ve formátech PDF,
PostScript a
XML.
Jan Tomášek
Milan Sova
18. prosinec 2005
1 Úvod
V druhé polovině června 2005 byla spuštěna nová CESNET CA. Certifikační autorita je implementována pomocí produktů firmy Entrust. Používáme produkt Entrust Authority Security Manager pro vlastní systém CA a Entrust Authority Enrollment Server for Web jako uživatelské rozhraní pro koncové uživatele. Toto softwarové řešení PKI je úspěšně používáno komerčními a vládními organizacemi po celém světě. CESNET CA pracuje jako víceméně otevřená služba; tento režim práce ji odlišuje od uzavřených institucí. Abychom zajistili pracovní toky odpovídající našim požadavkům, vyvinuli jsme systém LAI pro předredregistraci žádostí o certifikát prostřednictvím webového prohlížeče.
Systém LAI komunikuje s uživatelem prostřednictvím web formuláře a elektronickou poštou, získané údaje ukládá do LDAP databáze tak, aby je následně mohl využít registrační úředník při zpracování požadavku v Entrust Authority Security Manager. Po ověření žádosti vydá registrační úředník uživateli kódy pro generátor certifikátů, který je součástí webového rozhraní CESNET CA realizovaného standardním produktem Entrust Authority Enrollment Server for Web.
Webové rozhraní umožňuje zadat žádost o osobní nebo serverový certifikát. Osobní certifikát se z pohledu LAI od serverového liší jen tím, že má méně uživatelem volitelných atributů.
2 Zadání žádosti o certifikát uživatelem
Žádost o certifikát od CESNET CA musí začít vyplněním formuláře systému LAI. Ten po uživateli požaduje několik údajů popsaných dále. Tyto údaje jsou ověřeny před samotným zápisem, potom při dalším zpracování před návštěvou RA a nakonec při samotném zpracování pracovníkem registrační autority.
Obrázek 1: Ukázka registračního formuláře
2.1 Údaje vyplňované v předregistračním formuláři
- Jméno
CNv poliSubjectbudoucího certifikátu.- V případě člověka se jedná o jeho jméno, dojde-li ke konfliktu s již existujícím jménem, bude ke jménu přidáno náhodně vygenerované čtyřmístné číslo.
- U serveru se zadává jeho doménové jméno, toto jméno může
být volitelně doplněno o identifikátor služby, např:
ldap/ldap1.cesnet.cz. - Do LDAPu se ukládá v atributu
cn.
- Kontaktní email
- Adresa, na kterou bude CESNET CA zasílat informace o blížící se expiraci certifikátu, případně další úřední sdělení.
- Tento email není uveden v certifikátu a není ani jinak k dispozici ostatním uživatelům CESNET CA.
- Ukládá se v atributu
contactMail.
- Email(y)
- Volitelná položka obsahující jednu nebo více emailových adres, které mají být zapsány do certifikátu. Je podstatná především pro osobní certifikáty.
- Ukládá se v atributu
mail.
- DNS
- Povinná položka pro serverový certifikát. Může obsahovat jedno nebo více doménových jmen serveru, na němž bude certifikát používán.
- Hodnoty se ukládají do rozšíření certifikátu
subjectAltName. - Ukládá se v atributu
host.
- IP
- Volitelná položka pro serverový certifikát. Může obsahovat jednu nebo více adres.
- Hodnoty se ukládají do rozšíření
subjectAltNamecertifikátu. - Ukládá se v atributu
ipHostNumber.
- Extended key usage
- Volitelná položka pro serverový certifikát, skrytá před
uživatelem, pokud si nezvolí funkci Pokročilé
nastavení. Tato položka umožňuje volbu hodnot rozšíření
extendedKeyUsage, omezujícího použití certifikátu. Volitelné hodnoty jsou tyto:- CCA Generic Server
- CCA TLS Server
- CCA TLS Server + Any
- CCA TLS Server + Client
- CCA TLS Server + Client + Any
- Ukládá se v atributu
extKeyUsagePointer, což je odkaz na entry třídyextKeyUsageProfile.
- Volitelná položka pro serverový certifikát, skrytá před
uživatelem, pokud si nezvolí funkci Pokročilé
nastavení. Tato položka umožňuje volbu hodnot rozšíření
- Organizace
- Povinná položka pro osobní i serverové certifikáty.
- V certifikátu je anglický název příslušné organizace uložen
v položce
O. - Ukládá se v atributu
o, který je součástí DN entry, např.cn=pokus.example.com, o=CESNET, dc=cesnet-ca, dc=cz.
- Registrační autorita
- Na základě uživatelem zvolené organizace je mu nabídnut seznam registračních autorit, které mohou vyřídit jeho požadavek.
- Ukládá se v atributu
eeeRAPointer, což je odkaz na entry třídyeeeRA.
- Přístupový kód
- Poslední a požadovaná položka formuláře. Jedná se o kód složený ze dvou trojic alfanumerických znaků oddělených pomlčkou.
- Umožňuje uživateli provést změnu záznamu v LDAP databázi před dokončením všech kontrol zadaných hodnot.
- Slouží k jako pomůcka při zpracování záznamu registrační autoritou.
- Také je použit jako ochrana před zahlcením systému roboty.
- Ukládá se v atributu
serialNumber.
2.2 Volba registrační autority v závislosti na organizaci
Organizace LDAP databáze, do které jsou ukládány certifikáty,
odpovídá poli Subject vydávaných certifikátů. Kořenem
hierarchické struktury je dc=cesnet-ca,dc=cz. Pod ním se
nachází objekty reprezentující jednotlivé organizace, jedná se
o entry třídy organization a eeeOrganization,
každá organizace může obsahovat několik organizačních jednotek, ty
jsou třídy organizationalUnit a
eeeOrganization.
Objekty třídy eeeOrganization mohou obsahovat volitelný
atribut eeeRAPointer, který slouží k uložení odkazu na
registrační autority, oprávněné vyřizovat žádosti pro danou
organizaci. V záznamu organizace vybrané uživatelem ve WWW rozhraní
LAI a v záznamech nadřízených organizací vyhledá systém
odkazy na oprávněné registrační autority. Výsledný seznam je pak
uživateli nabídnut k výběru RA, která má jeho požadavek
zpracovat.
Celý postup bude jasnější na příkladu: Uživatel Petr Novák
z Elektrotechnické fakulty ČVUT chce zažádat o osobní
certifikát. V jeho případě bude subject certifikátu cn=Petr
Novak, ou=Faculty of Electrical Engineering, o=Czech Technical
University, dc=cesnet-ca, dc=cz. Systém tedy bude prohledávat
v tomto pořadí:
ou=Faculty of Electrical Engineering, o=Czech Technical University, dc=cesnet-ca, dc=czo=Czech Technical University, dc=cesnet-ca, dc=czdc=cesnet-ca, dc=cz
dc=cesnet-ca, dc=cz, která tedy slouží jako
registrační autorita "poslední záchrany".
2.3 Kontrola oprávnění RA vydávat certifikáty pro určitá doménová jména
Jestliže uživatel žádá o serverový certifikát, je před přijetím
žádosti provedena kontrola, jestli má vybraná RA oprávnění vydávat
certifikáty s uvedenými doménovými jmény. Seznam regulárních výrazů
popisujících domény, pro které může RA provádět registraci, je
uložen ve volitelném atributu eeeSubjectDNRE v záznamu
každé RA.
V případě, že uživatelem zvolená RA nemá oprávnění registrovat žádosti s některým z doménových jmen, je na to uživatel upozorněn a může si zvolit:
- jinou registrační autoritu
- trvat na již zvolené RA a počkat dokud RA nezíská potřebné oprávnění.
2.4 Zápis požadavku do databáze
V případě, že uživatel požadavek potvrdí, je žádost přijata a zapsána do databáze. Systém uživateli zobrazí rekapitulaci a připomene přístupový kód, který bude ještě potřebovat.
Obrázek 2: Rekapitulace přijaté žádosti
Současně se zápisem do LDAPu je zahájen proces kontroly emailových adres.
3 Další zpracování požadavku o certifikát
3.1 Kontrola emailových adres
Při zápisu požadavku do databáze je vygenerováno náhodné číslo,
které je uloženo je uloženo do atributu mvNouceHashSalt
záznamu žádosti. Pro jednu každou emailovou adresu je poté
vygenerována výzva (řetězec náhodných znaků). Ta je odeslána
v kontrolní zprávě na uvedenou adresu. Systém zároveň uloží do
atributu mvNounceHash kontrolní součet (hash) vypočtený
z náhodného čísla a výzvy pro budoucí kontrolu.
Uživatelova odpověď na kontrolní zprávu je doručena ke zpracování
skriptu check-mail.pl. Ten v přijatém emailu vyhledá
emailovou adresu a výzvu. Najde v LDAPu všechny žádosti, v nichž se
vyskytuje ještě neověřená emailová adresa shodná s tou, která je
uvedena v přijaté zprávě. Z hodnoty atributu
mvNouceHashSalt nalezeného záznamu a doručené výzvy pak
systém vygeneruje kontrolní součet a porovná jej s hodnotou atributu
mvNounceHash. Shodují-li se, zapíše přijatou výzvu do
atributu mvNounce společně s emailem, ke kterému patří. Tím
je kontrola příslušné emailové adresy ukončena.
Ve chvíli, kdy byla ověřena poslední emailová adresa, je tento
fakt zaznamenám uložením časové značky do atributu
mvChecked příslušného záznamu.
3.1.1 Příklad kontrolního emailu
Uživatelům je rozesílán kontrolní email v tomto znění:
Subject: [CESNET CA] kontrola emailu jan.tomasek@cesnet.cz:bie4sh
From: "CESNET CA" ra-email-check@cesnet-ca.cz
To: jan.tomasek@cesnet.cz
V žádosti o X.509 certifikát veřejného klíče podané u CESNET CA (ze
dne 20.12.2005 14:15:42) jste uvedl(a) svoji email adresu
jan.tomasek@cesnet.cz. Jako potvrzení funkčnosti této adresy, zašlete
prosím tuto zprávu zpět na adresu ra-email-check@cesnet-ca.cz. Do
odpovědi nemusíte nic psát - zpracovává ji automat - . Stačí když
zachováte řádku s předmětem nebo řádku "email-check" v těle zprávy.
Ve většině programů pro čtení pošty stačí použít funkci "Odpověď".
email-check:jan.tomasek@cesnet.cz:bie4sh
S pozdravem
CESNET CA (LDAP AutoInsert WEB Interface)
3.2 Kontrola doménových jmen
V tomto kroku se ověřuje, zda je vybraná registrační autorita oprávněna vydat certifikát s požadovaným doménovým jménem. Kontrola je duplicitní s kontrolou prováděnou webovým rozhraním - provádí se pro případ, že by uživatel poslal požadavek registrační autoritě, která nemá oprávnění takový požadavek registrovat.
Systém porovnává doménová jména s atributem
eeeSubjectDNRE v entry popisující registrační
autoritu. V případě, že najde shodu, poznamená do atributu
hostsChecked doménové jméno, časovou značku, odkaz na entry
RA a pravidlo, na základě kterého bylo doménové jméno schváleno.
V případě, že nejsou takto ověřena všechna doménová jména uvedená
v žádosti, entry zůstává "spící" v systému. Pokud jsou
všechna doménová jména ověřena, je do atributu hostVerified
zapsána časová značka, čímž se žádost uvolňuje k dalšímu zpracování.
3.3 Kontrola IP adres
Do budoucna uvažujeme, že IP adresy budou podrobeny stejné
kontrole jako doménová jména. Pro tyto účely jsou připraveny
atributy ipHostNumberChecked a
ipHostNumberVerified. V současnosti je systém nastaven
tak, že jakoukoliv IP adresu může registrovat kterákoliv RA.
3.4 Export žádosti pro Entrust
Jakmile jsou nastaveny mvChecked, hostVerified
a hostNumberVerified, resp. jen ty, které mají u té které
žádosti smysl, je žádost předána skriptu
2nd-check-mail.pl. Ten provede audit všech předchozích
kontrol a je-li vše v pořádku, provede následující kroky:
- do atributu
eeeExportuloží časovou značku - rozšíří
objectClassentry o hodnotypkiUseraentrustUser
3.5 Informování uživatele o dokončení předregistrace
Po exportu záznamu pro Entrust odešle systém uživateli email s dalšími instrukcemi.
- Jestliže se jedná o osobní certifikát, je uživatel požádán, aby si domluvil návštěvu u registrační autority.
- Jedná-li se o serverový certifikát, je uživateli zaslán přehled požadovaných parametrů certifikátu s výzvou, aby na zprávu odpověděl zprávou podepsanou svým osobním certifikátem. Pracovník registrační autority ověří elektronický podpis, požadovaný obsah certifikátu a příslušná oprávnění žadatele a zaregistruje žádost v Entrustu. Uživateli pak odešle autorizační kódy pro generátor certifikátu v zašifrované zprávě.
3.6 Expirace žádostí
Systém LAI má implementovány kontrolní mechanizmy, které zajišťují expiraci žádostí, na které žadatel zapomněl nebo o ně ztratil zájem.
Kontrolu emailových adres musí uživatel stihnout provést do 3 dnů od zadání žádosti. Systém ho na blížící se expiraci upozorní 2 a 1 den předem.
Registrace žádosti registrační autoritou musí proběhnout do 21 dnů od podání žádosti. Systém uživatele upozorňuje emailem 14, 7, 5, 3 a 1 den před expirací žádosti.
Žádosti, které vyexpirují, jsou ze systému vymazány. Uživatel je o tom informován emailem, správcům systému je pro kontrolu také odeslán email obsahující LDIF smazané žádosti.
4 Závěr
Po téměř půlročním provozu systému LAI můžeme konstatovat, že jak uživatelům, tak pracovníkům registračních autorit významně zjednodušuje práci v porovnání s původním řešením firmy Entrust.
Na základě získaných zkušeností plánujeme v následujícím období:
- úpravu uživatelského rozhraní z jednoho komplexního formuláře do několika formulářů, z nichž každý bude uživateli nabízet jen jednu otázku k řešení
- implementaci online kontroly oprávnění uživatele žádat o certifikát s určitými doménovými jmény
- připravit využití osobních certifikátů k autentizaci pro přístup k systému LAI
5 Přílohy
5.1 Schema pro Sun One Directory 5.2
Pro realizaci systému LAI jsme definovali následující schéma:
dn: cn=schema
attributeTypes: ( contactMail-oid
NAME 'contactMail'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
X-ORIGIN 'CESNET CA'
)
attributeTypes: ( eeeExport-oid
NAME 'eeeExport'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
SINGLE-VALUE
X-ORIGIN 'CESNET CA'
)
objectClasses: ( eee-oid
NAME 'eee'
SUP top STRUCTURAL
MUST (
cn $
preferredLanguage $
serialNumber $
contactMail $
eeeRAPointer
)
MAY (
eeeExport
)
X-ORIGIN 'CESNET CA'
)
attributeTypes: ( mvNouce-oid
NAME 'mvNouce'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
X-ORIGIN 'CESNET CA'
)
attributeTypes: ( mvNouceHash-oid
NAME 'mvNouceHash'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
X-ORIGIN 'CESNET CA'
)
attributeTypes: ( mvNouceHashSalt-oid
NAME 'mvNouceHashSalt'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE
X-ORIGIN 'CESNET CA'
)
attributeTypes: ( mvChecked-oid
NAME 'mvChecked'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
SINGLE-VALUE
X-ORIGIN 'CESNET CA'
)
objectClasses: ( mailVerifier-oid
NAME 'mailVerifier'
SUP top STRUCTURAL
MUST (
mvNouceHash $
mvNouceHashSalt
)
MAY (
mail $
mvNouce $
mvChecked
)
X-ORIGIN 'CESNET CA'
)
attributeTypes: ( ipHostNumberChecked-oid
NAME 'ipHostNumberChecked'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
X-ORIGIN 'CESNET CA'
)
attributeTypes: ( ipHostNumberVerified-oid
NAME 'ipHostNumberVerified'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
X-ORIGIN 'CESNET CA'
)
objectClasses: ( ipHostNumberVerifier-oid
NAME 'ipHostNumberVerifier'
SUP top STRUCTURAL
MUST (
ipHostNumber
)
MAY (
ipHostNumberVerified $
ipHostNumberChecked
)
X-ORIGIN 'CESNET CA'
)
attributeTypes: ( hostsChecked-oid
NAME 'hostsChecked'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
X-ORIGIN 'CESNET CA'
)
attributeTypes: ( hostVerified-oid
NAME 'hostVerified'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
X-ORIGIN 'CESNET CA'
)
objectClasses: ( hostVerifier-oid
NAME 'hostVerifier'
SUP top STRUCTURAL
MUST (
host
)
MAY (
hostVerified $
hostsChecked
)
X-ORIGIN 'CESNET CA'
)
attributeTypes: ( extKeyUsagePointer-oid
NAME 'extKeyUsagePointer'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
SINGLE-VALUE
X-ORIGIN 'CESNET CA'
)
objectClasses: ( extKeyUsage-oid
NAME 'extKeyUsage'
SUP top STRUCTURAL
MAY (
extKeyUsagePointer
)
X-ORIGIN 'CESNET CA'
)
attributeTypes: ( sortName-oid
NAME 'sortName'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE
X-ORIGIN 'CESNET CA'
)
objectClasses: ( extKeyUsageProfile-oid
NAME 'extKeyUsageProfile'
SUP top STRUCTURAL
MUST (
cn $
description $
sortName
)
X-ORIGIN 'CESNET CA'
)
attributeTypes: ( serialNumberHash-oid
NAME 'serialNumberHash'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
X-ORIGIN 'CESNET CA'
)
objectClasses: ( serialNumberHashEntry-oid
NAME 'serialNumberHashEntry'
SUP top STRUCTURAL
MUST (
serialNumberHash
)
X-ORIGIN 'CESNET CA'
)
objectClasses: ( csrContactInfo-oid
NAME 'csrContactInfo'
SUP top STRUCTURAL
MUST (
labeledUri $
mail
)
X-ORIGIN 'CESNET CA'
)
attributeTypes: ( eeeRAPointer-oid
NAME 'eeeRAPointer'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
SINGLE-VALUE
X-ORIGIN 'CESNET CA'
)
objectClasses: ( eeeOrganization-oid
NAME 'eeeOrganization'
SUP top STRUCTURAL
MAY (
eeeRAPointer
)
X-ORIGIN 'CESNET CA'
)
attributeTypes: ( eeeRAName-oid
NAME 'eeeRAName'
SUP cn
X-ORIGIN 'CESNET CA'
)
attributeTypes: ( eeeSubjectDNRE-oid
NAME 'eeeSubjectDNRE'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
X-ORIGIN 'CESNET CA'
)
objectClasses: ( eeeRA-oid
NAME 'eeeRA'
SUP top STRUCTURAL
MUST (
eeeRAName
)
MAY (
description $
labeledURI $
mail $
eeeSubjectDNRE
)
X-ORIGIN 'CESNET CA'
)