Copyright © 1997 RNDr. Libor Dostalek
 
 

Certifikáty a certifikační autority

Certifikáty

Certifikát je datová struktura (řetězec bitů), pomocí které se zveřejňují údaje o uživateli a zejména uživatelův veřejný šifrovací klíč (v případě RSA šifer). Certifikát je elektronicky podepsán (ověřen) certifikační autoritou. Z certifikátu je možné zíkat veřejný šifrovací klíč uživatele, který je možné použít   k prokazování totožnosti uživatele. V případě, že certifikát obsahuje šifrovací klíč určený také k šifrování dat, pak je možné i tento klíč z certifikátu použít k šifrování dat odesílaných uživateli.

Certifikát se často přirovnává k občanskému průkazu. Zatímco občanský průkaz se vydává v tištěné podobě, tak certifikát se popisuje jako struktura v jazyce ASN.1 a mezi počítači se přenáší v kódování DER (podmnožina BER). Certifikát je možné vypsat i v textovém tvaru, ale s tímto případem se setkáváme zřídka - např.  certifikát samotné certifikační autority  může být vytištěn v textovém tvaru a  ověřen (neelektronickým) notářem a  podepsán  rukou psaným podpisem.

Zásadní rozdíl mezi občanským průkazem a certifikátem je, že občanský průkaz neobsahuje šifrovací klíč.

Všeobecně se používá struktura certifikátu zavedená doporučením ITU (dříve CCITT) X.509. Původní verze číslo 1 certifikátu X.509 z roku 1988 byla postupně rozšířena až do dnes nejběžnější verze 3.

Verze 1 certifikátu X.509 definuje tzv. certifikát, kdežto další verze definují tzv. "rozšířené certifikáty". Rozšířené certifikáty mohou obsahovat další volitelné informace - tzv. OPTIONS.

Kromě certifikátů podle doporučení X.509 a kódovaných v DER se v praxi můžeme setkat i s certifikáty jiných formátů - např. EDI či PKSC#7. Forma takový certifikátu je sice jiná, ale princip zůstává stejný.

Nejprve si popíšeme strukturu certifikátu, později si teprve objasníme princip mechanizmu použití certifikátu.

Struktura certifikátu je vcelku logická - v mohém připomíná údaje z občanského průkazu:
 
 
 
Položka struktury certifikátu Přirovnání k položce občanského průkazu ASN.1 syntaxe
Certificate ::= SIGNED SEQUENCE{
Verze 
  • 0 ... X.509 verze 1 (1988)
  • 1 ... X.509 verze 2
  • 2 ... X.509 verze 3
Verze (federální, červený český, karta, ...) version  [0]       Version DEFAULT v1988,
Sériové číslo Číslo a série občanského průkazu serialNumber    SerialNumber,
Algoritmus použitý pro podpis Razítko (beran) přes fotografii signature           Signature,
Vydal (identifikace certifikační autority podle X.500) Vydal issuer                Name,
Platnost od-do Platnost validity              Validity,
Jméno a adresa (identifikace vlastníka) Jméno a adresa subject              Name,
Veřejný klíč - subjectPublicKeyInfo SubjectPublicKeyInfo}

Kde:

Touto definicí se nenechte zaskočit. Nyní si rozebereme jednotlivé části certifikátu: Nejprve si však sestavíme celý certifikát:

SEQUENCE
    30 82 02 31
  SEQUENCE
     30 82 01 9a
   INTEGER           :2D
      02 01 2d
   SEQUENCE
      30 0d
    OBJECT            :md5withRSAEncryption
       06 09 2a 86 48 86 f7 0d 01 01 04
    NULL
       05 00
   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
   SEQUENCE
      30 1e
    UTCTIME           :970804050456Z
       17 0d 39 37 30 38 30 34 30 35 30 34 35 36 5a
    UTCTIME           :980203050456Z
       17 0d 39 38 30 32 30 33 30 35 30 34 35 36 5a
   SEQUENCE
      30 81 a9
    SET
       31 0b
     SEQUENCE
        30 09
      OBJECT            :countryName
         06 03 55 04 06
      PRINTABLESTRING   :CZ
         13 02 43 5a
    SET
       31 0a
     SEQUENCE
        30 08
      OBJECT            :stateOrProvinceName
         06 03 55 04 08
      PRINTABLESTRING   :2
         13 01 32
    SET
       31 19
     SEQUENCE
        30 17
      OBJECT            :localityName
         06 03 55 04 07
      PRINTABLESTRING   :Ceske Budejovice
         13 10 43 65 73 6b 65 20 42 75 64 65 6a 6f 76 69 63 65
    SET
       31 11
     SEQUENCE
        30 0f
      OBJECT            :organizationName
         06 03 55 04 0a
      PRINTABLESTRING   :PVT,a.s.
         13 08 50 56 54 2c 61 2e 73 2e
    SET
       31 0c
     SEQUENCE
        30 0a
      OBJECT            :organizationalUnitName
         06 03 55 04 0b
      PRINTABLESTRING   :VCU
         13 03 56 43 55
    SET
       31 17
     SEQUENCE
        30 15
      OBJECT            :commonName
         06 03 55 04 03
      PRINTABLESTRING   :Libor Dostalek
         13 0e 4c 69 62 6f 72 20 44 6f 73 74 61 6c 65 6b
    SET
       31 1f
     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
    SET
       31 18
     SEQUENCE
        30 16
      OBJECT            :2 5 4 12
         06 03 55 04 0c
      PRINTABLESTRING   :+42 38 7747 361
         13 0f 2b 34 32 20 33 38 20 37 37 34 37 20 33 36 31
   SEQUENCE
      30 5c
    SEQUENCE
       30 0d
     OBJECT            :rsaEncryption
        06 09 2a 86 48 86 f7 0d 01 01 01
     NULL
        05 00
    BIT STRING
       03 4b 00 30 48 02 41 00 e4 50 9e 79 da 4c 68 70 ad 60 46 2b
       ea 9d bc 81 a2 04 6c 9a 3c d6 5f 9e a5 e5 6e d5 ee 49 4a 91
       1d 78 44 69 c2 18 0e d3 15 7c ae 30 75 13 9e ea 59 9d 96 bd
       c3 b8 c7 3b e3 bf e8 4f b4 a3 3b 65 02 03 01 00 01
  SEQUENCE
     30 0d
   OBJECT            :md5withRSAEncryption
      06 09 2a 86 48 86 f7 0d 01 01 04
   NULL
      05 00
  BIT STRING
     03 81 81 00 71 7d e6 c8 40 20 b1 9d 5b 72 63 f6 15 7e c0 1c
     b7 57 5b 9b 1a c1 91 e6 fd 67 ec 4d ee 2f c5 73 75 d8 2e 28
     3c ad a8 37 71 f5 a0 c0 3a 9b 9e df 0b 2b 3b c5 b7 e1 73 96
     b3 b5 a8 89 bb 9a 26 25 58 da b6 ea b9 58 dc a1 a9 58 f3 68
     58 62 53 93 2a ea 5f cd 3f 58 08 54 e4 1f 65 40 ea a0 2f dc
     d7 1e 11 3a e5 0a b4 5a ef f7 af 24 60 c8 18 1e 6d 28 85 7a
     6d 74 45 95 5a bc 11 e3 81 57 1e 8f

Po vynechání komentářů, nadbytečných řádků a mezer získáme hexadecimálně vyjádřený certifikát:

308202313082019a02012d300d06092a864886f70d0101040500305c310b30090603550406130243
5a3111300f060355040a130850565420612e732e3110300e0603550403130743412d505654313128
302606092a864886f70d010901161963612d6f706572407037307830332e62726e2e7076742e637a
301e170d3937303830343035303435365a170d3938303230333035303435365a3081a9310b300906
035504061302435a310a3008060355040813013231193017060355040713104365736b6520427564
656a6f766963653111300f060355040a13085056542c612e732e310c300a060355040b1303564355
311730150603550403130e4c69626f7220446f7374616c656b311f301d06092a864886f70d010901
1610646f7374616c656b407076742e6e657431183016060355040c130f2b34322033382037373437
20333631305c300d06092a864886f70d0101010500034b003048024100e4509e79da4c6870ad6046
2bea9dbc81a2046c9a3cd65f9ea5e56ed5ee494a911d784469c2180ed3157cae3075139eea599d96
bdc3b8c73be3bfe84fb4a33b650203010001300d06092a864886f70d010104050003818100717de6
c84020b19d5b7263f6157ec01cb7575b9b1ac191e6fd67ec4dee2fc57375d82e283cada83771f5a0
c03a9b9edf0b2b3bc5b7e17396b3b5a889bb9a262558dab6eab958dca1a958f368586253932aea5f
cd3f580854e41f6540eaa02fdcd71e113ae50ab45aeff7af2460c8181e6d28857a6d7445955abc11
e381571e8f

Jenže pro komunikaci mezi počítači je běžnější kódování Base64. Výsledný certifikát je pak doplněn závorkami "-----BEGIN CERTIFICATE-----" a "-----END CERTIFICATE-----". Tomuto tvaru certifikátu se někdy také říká PEM-formát:

-----BEGIN CERTIFICATE-----
MIICMTCCAZoCAS0wDQYJKoZIhvcNAQEEBQAwXDELMAkGA1UEBhMCQ1oxETAPBgNV
BAoTCFBWVCBhLnMuMRAwDgYDVQQDEwdDQS1QVlQxMSgwJgYJKoZIhvcNAQkBFhlj
YS1vcGVyQHA3MHgwMy5icm4ucHZ0LmN6MB4XDTk3MDgwNDA1MDQ1NloXDTk4MDIw
MzA1MDQ1NlowgakxCzAJBgNVBAYTAkNaMQowCAYDVQQIEwEyMRkwFwYDVQQHExBD
ZXNrZSBCdWRlam92aWNlMREwDwYDVQQKEwhQVlQsYS5zLjEMMAoGA1UECxMDVkNV
MRcwFQYDVQQDEw5MaWJvciBEb3N0YWxlazEfMB0GCSqGSIb3DQEJARYQZG9zdGFs
ZWtAcHZ0Lm5ldDEYMBYGA1UEDBMPKzQyIDM4IDc3NDcgMzYxMFwwDQYJKoZIhvcN
AQEBBQADSwAwSAJBAORQnnnaTGhwrWBGK+qdvIGiBGyaPNZfnqXlbtXuSUqRHXhE
acIYDtMVfK4wdROe6lmdlr3DuMc747/oT7SjO2UCAwEAATANBgkqhkiG9w0BAQQF
AAOBgQBxfebIQCCxnVtyY/YVfsAct1dbmxrBkeb9Z+xN7i/Fc3XYLig8rag3cfWg
wDqbnt8LKzvFt+FzlrO1qIm7miYlWNq26rlY3KGpWPNoWGJTkyrqX80/WAhU5B9l
QOqgL9zXHhE65Qq0Wu/3ryRgyBgebSiFem10RZVavBHjgVcejw==
-----END CERTIFICATE-----


Adresářová struktura