Ukryto pod rouškou X.509

S digitálními certifikáty se uživatelé Internetu mohou setkat poměrně často - slouží totiž k ověřování identity vlastníků šifrovacích klíčů. Jedním z nejpoužívanějších typů jsou certifikáty X.509, které nacházejí uplatnění například při komunikaci skrze protokol SSL. Jaká je jejich vnitřní struktura a obsah a jak si vlastní certifikát můžete vytvořit?

V nedávno publikovaném článku Skryté vnady protokolu SSL byly naznačeny digitální certifikáty a práce s nimi, následující řádky a odstavce se na tuto problematiku zaměří z větší blízkosti. Jelikož opakování je matkou moudrosti, tak pouze pro připomenutí uveďme, že certifikáty jednoznačně spojují šifrovací klíče s jejich vlastníky a dovolují v dostatečné míře ověřit, komu patří.

Pravděpodobně nejznámějším typem digitálních certifikátů současnosti je X.509 (RFC 3280), původně návrh ITU-T uvedený v roce 1988 ve spojitosti se standardem X.500 (definuje adresářové služby). Struktura certifikátu X.509 verze 3 je následující (v závorkách jsou uvedeny odpovídající RFC ekvivalenty):

  • Číslo verze (version)
  • Sériové číslo (serialNumber)
  • ID podpisového algoritmu (signature)
  • Vydavatel (issuer)
  • Platnost (validity)
    • Od (notBefore)
    • Do (notAfter)
  • Subjekt (subject)
  • Informace o veřejném klíči subjektu (subjectPublic­KeyInfo)
    • Algoritmus veřejného klíče subjektu (algorithm)
    • Veřejný klíč subjektu (subjectPublicKey)
  • Jednoznačná identifikace vydavatele (issuerUniqueID)
  • Jednoznačná identifikace subjektu (subjectUniqueID)
  • Rozšíření certifikátu (extensions)

  • ID podpisového algoritmu certifikátu (signatureAlgo­rithm)
  • Digitální podpis certifikátu (signatureValue)

Jak naznačuje horizontální oddělovač před posledními dvěma položkami, je celý certifikát (tedy všechny jeho prvky) digitálně podepsanou posloupností. Tento fakt je lépe vidět z části formálního zápisu v abstraktním jazyce ASN.1:

Certificate    ::=     SEQUENCE     {

         bsCertificate     TBSCertificate,

         signatureAlgorithm       AlgorithmIdentifier,

         signatureValue       BIT STRING

         }

TBSCertificate    ::=    SEQUENCE    {

           . . .

         }


Číslo verze certifikátu (version) neodpovídá ničemu jinému než použité variantě X.509 a může nabývat hodnot 0 (verze 1), 1 (verze 2), nebo konečně 2 (verze 3). Sériové číslo certifikátu (serialNumber) musí z definice být celé číslo.

Identifikátor podpisového algoritmu (signature) obsahuje dvě položky, a sice označení algoritmu (např. DSA) spolu s jím požadovanými parametry (bližší informace o používaných identifikátorech viz RFC 3279). Použitý algoritmus musí být shodný s podpisovým algoritmem celého certifikátu (signatureAlgo­rithm).

Položka Vydavatel (issuer) obsahuje identifikaci organizace, která certifikát vydala a podepsala, a podobně prvek Subjekt (subject) identifikuje toho, komu byl certifikát vydán. K tomu se používají speciální jedinečná jména (definováno v X.501), jež se označují jako Distinguished name (DN). Jedinečné jméno se skládá z posloupnosti relativních jedinečných jmen (Relative Distinguished Name) tvaru identifikátor =  hodnota, kde identifikátory na levé straně rovnosti mohou být například Country ©, Organization (O), Common Name (CN) apod. Výsledkem je pak kýžená stromová struktura:

1667

Webový prohlížeč pak samozřejmě dovoluje tyto informace u každého certifikátu také zobrazit:

1668

MIF16

Položky jednoznačné identifikace vydavatele (issuerUniqueID) a předmětu (subjectUniqueID) byly zavedeny „až“ v X.509 verze 2 a slouží k řešení problémů s několikanásobným použitím stejných hodnot issuer či subject. Konečně rozšíření (extensions)spat­řila světlo světa spolu s třetí verzí X.509 a dovolují přidat k certifikátu další položky. Vlastní testovací certifikát s omezenou dvoutýdenní dobou platnosti si lze na počkání vytvořit například na stránkách První certifikační autority, a.s., kdy vám během několika málo chvil vytvořený certifikát bude doručen e-mailem.

Webové prohlížeče samozřejmě umožňují nové certifikáty importovat, exportovat a spravovat. Fyzický soubor s certifikátem lze rozeznat, například podle následujících přípon:

  • .CER, .DER certifikát kódovaný podle DER (Distinguished Encoding Rules, používá se pro zakódování dat před jejich podepsáním)
  • .PEM údaje certifikátu kódovány v Base64 a uzavřeny mezi řetězce -----BEGIN CERTIFICATE----- a -----END CERTIFICATE-----
  • .P7B, .P7C, .PK7 údaje kódovány podle PKCS#7 (Public Key Cryptography Standard, RFC 2315) a uzavřeny mezi řetezce -----BEGIN PKCS7----- a -----END PKCS7-----
  • .PFX, .P12 údaje kódovány dle PKCS#12

Anketa

Hledáte informace ve zdrojích RFC?

Školení: Jak na firemní Facebook prakticky

  •  
    Jak efektivně propojit Facebook s webem.
  • Jak vše měřit a vyhodnocovat.
  • Jak řešit krizové situace.

Detailní informace o školení Facebooku »