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]

Obrázek 1: Ukázka registračního formuláře

2.1   Údaje vyplňované v předregistračním formuláři

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í:

V případě, že organizace nemá vlastní registrační autoritu (zatím většina), je uživateli vždy nabídnuta CESNET RA, na kterou je umístěn odkaz v 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:

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]

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:

čímž se entry stává "čitelnou" pro Entrust.

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.

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í:

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'
 )

další weby:fond rozvojemetacentrumCzechLightpřenosyvideoservereduroameduID.cz