Píšeme o certifikátech podle doporučení X.509. Avšak doporučení X.509 je jedním z řady doporučení X.500 až teoreticky X.599. Tato řada doporučení se zabývá konstrukcí obecné adresářové struktury. Pro ilustraci tuto strukturu můžeme přirovnat k pokusu o vydání bílých stránek všech telefoních seznamů Vesmíru v jedné publikaci.
V této adresářové struktuře může být popsán každý, tj. může být specifikována certifikační autorita i dokonce každý uživatel, který žádá o vydání certifikátu. Certifikační autorita i uživatel budou popsáni pomocí této struktury skládající se z adresářových záznamů.
Každý záznam adresářové struktury je složen z atributů, které jsou určitého typu a mají jednu nebo více hodnot.
Každý objekt v adresářové struktuře je určen tzv. rozlišitelným jménem (Distinguished Name). Právě rozlišitelná jména jsou i obsahem identifikátorů issuer a subject v certifikátu.
Rozlišitelné jméno je posloupnost (od kořene adresářového stromu) tzv. relativních rozlišitelných jmen (Relative Distinguished Name):
Name ::= SEQUENCE OF RelativeDistinguishedName
RelativeDistinguishedName ::= SET OF AttributeValueAssertion
AttributeValueAssertion ::= SEQUENCE {AttributeType, AttributreValue}
AttributeType ::= OBJECT IDENTIFIER
AttributeType ::= ANY
Tolik k definici. Nyní se pokusím znovu vysvětlit co to je rozlišitelné jméno na příkladu. Odmyslíme-li si na moment jazyk ASN.1, pak příklady relativních rozlišitelných jmen mohou být:
Country=CZ
Organization=PVT,a.s.
CommonName=Libor Dostálek
Běžně se v textovém zápisu názvy identifikátorů objektů zkracují (Country na C, Organization na O, CommonName na CN atd.). Takže naše přiklady relativních rozlišitelných jmen bychom mohli napsat:
C=CZ
O=PVT,a.s.
CN=Libor Dostálek
Toto je však pouze textový zápis vhodný pro komunikaci mezi lidmi. Při komunikaci mezi počítači musíme tento zápis převést do kódování BER. Nejprve musíme uvést jakých hodnot nabývají identifikátory objektů používaných v rozlišitelných jménech.
Jelikož se pohybujeme v oblasti doporučení řady X, tak relativní rozlišitelná jména specifikuje doporučení X.520. Problém ovšem je, že tato doporučení nejsou šita pro Internet, takže např. s mailovou adresou jsou potíže. Doporučení řady X.400 specifikující elektronickou poštu se sice elektronickou poštou zabývají, ale adresa elektronické pošty podle doporučení X.400 je zcela odlišná od adresy elektronické pošty používané v Internetu (RFC822).
První norma, které chyběla specifikace internetovské poštovní adresy (tj. adresy prodle RFC822) byla norma PKCS#7 (PKCS jsou normy od RSA). Takže norma PKCS#7 si zavedla pro internetovskou e-mailovou adresu svůj identifikátor, který se používá dodnes.
Příklady nejčastěji používaných rozlišitelných jmen:
Identifikátor | Zkr. | Význam | Název | Hodnota | Norma,
která jej zavádí |
Příklad ASN.1 & BER
(AttributeValueAssertion) |
Country | C | Stát podle ISO 3166, tj. podle stejné normy jaká se používá pro top level domény DNS (CZ=Česká republika, SK=Slovensko, FJ=Fidži...) | countryName | {joint-iso-ccitt(2) ds(5) attributeType(4) 6} | X.520 | SEQUENCE
30 09 OBJECT:countryName 06 03 55 04 06 PRINTABLESTRING:CZ 13 02 43 5a |
State or Province | SP | Nižší organizační jednotka státu. Např. spolková zěmě. | stateOrProvinceName | {2 5 4 8} | X.520 | SEQUENCE
30 0d OBJECT:stateOrProvinceName 06 03 55 04 08 PRINTABLESTRING:Morava 13 06 4d 6f 72 61 76 61 |
Locality | L | Místo (např. město) | localityName | {2 5 4 7} | X.520 | SEQUENCE
30 17 OBJECT:localityName 06 03 55 04 07 PRINTABLESTRING:CeskeBudejovice 13 10 43 65 73 6b 65 20 42 75 64 65 6a 6f 76 69 63 65 |
Common Name | CN | Název objektu pod kterým je místně znám. Např. u osob to může být jméno a příjmení. U serverů pak jejich DNS-jméno. | commonName | {2 5 4 3} | X.520 | SEQUENCE
30 15 OBJECT:commonName 06 03 55 04 03 PRINTABLESTRING:LiborDostalek 13 0e 4c 69 62 6f 72 20 44 6f 73 74 61 6c 65 6b 0 |
Organization | O | Název firmy | organizationName | {2 5 4 10} | X.520 | SEQUENCE
30 0f OBJECT:organizationName 06 03 55 04 0a PRINTABLESTRING:PVT,a.s. 13 08 50 56 54 2c 61 2e 73 2e |
Organization Unit | OU | Název části firmy | organizationUnitName | {2 5 4 11} | X.520 | |
Street Address | Ulice a číslo domu | streetAddressName | {2 5 4 9} | X.520 | ||
Email Address | Internetová adresa elektronické pošty. | emailAddress | {iso(1) member-body(2) US(840) rsadsi(113549) pkcs(1) pkcs-9(9) 1} | PKCS#9 | SEQUENCE
30 1d OBJECT:emailAddress 06 09 2a 86 48 86 f7 0d 01 09 01 IA5STRING:dostalek@pvt.net 16 10 64 6f 73 74 61 6c 65 6b 40 70 76 74 2e 6e 65 74 |
Rozlišitelné jméno je pak sekvence relativních rozlišitelných jmen (ve
směru od kořene). V textovém tvaru tedy např.:
C=CZ, O=PVT,a.s., OU=Vzdělávací centrum, CN=Libor Dostálek
Relativní rozlišitelná jména jsou uzly grafu, (absolutní) rozlišitelná jména (Name) jsou cestami v grafu:
Konkrétní případ celého Name v kódování BER je (upozorňuji, že relativní rozlišitelné jméno je byť jednoprvková množina dvojic objekt-hodnota):
SEQUENCE
30 5c
SET
31 0b
SEQUENCE
30 09
OBJECT
:countryName
06 03 55 04 06
PRINTABLESTRING :CZ
13 02 43 5a
SET
31 11
SEQUENCE
30 0f
OBJECT
:organizationName
06 03 55 04 0a
PRINTABLESTRING :PVT
a.s.
13 08 50 56 54
20 61 2e 73 2e
SET
31 10
SEQUENCE
30 0e
OBJECT
:commonName
06 03 55 04 03
PRINTABLESTRING :CA-PVT1
13 07 43 41 2d
50 56 54 31
SET
31 28
SEQUENCE
30 26
OBJECT
:emailAddress
06 09 2a 86 48
86 f7 0d 01 09 01
IA5STRING
:ca-oper@p70x03.brn.pvt.cz
16 19 63 61 2d
6f 70 65 72 40 70 37 30 78 30 33 2e 62 72 6e
2e 70 76 74 2e
63 7a
Cvičení: Nakreslete si graficky stromovou strukturu z relativních rozlišitelných jmen uveseného rozlišitelného jména.
Poznámka: U certifikátů podle doporučení X.509 verze 1 certifikační autorita garantuje, aby položka subject, tj. rozlišitelné jméno uživatele, byla jednoznačná. Jinými slovy, aby CA nevydala dva certifikáty se stejným polem subject. (pochopitelně, že sériové číslo vydaného certifikátu musí být také jednoznačné). Avšak vzhledem k omezené době platnosti certifikátu je nutné aby si uživatel nechával periodicky vystavovat certifikáty, tedy každý nově vydaný certifikát musí mít pozměněné pole subject.
Je třeba si také uvědomit, že i prošlé certifikáty jsou stále funkční, protože se používají pro ověřování platnosti dokumentů vydaných v době platnosti (nyní již prošlých) certifikátů.