20       OpenSSL

Martin Szotkowski

Vývojové prostředí pro SSL označované jako SSLref je možné získat u firmy Netscape. Diky bývalým exportním omezením USA a Kanady byl omezen export tohoto software. Na australském  serveru   ftp://ftp.psy.uq.edu.au/pub/Crypto/SSL/  se objevil ‚free‘ ekvivalent tohoto software pod názvem SSLeay (bližší informace na http://www.psy.uq.edu.au/~ftp/Crypto). Navíc SSLeay nemá žádna omezeni ani na délku šifrovacích klíčů. Pokud si vyvinete vlastni software  v tomto prostředí nebo použijete software vyvinuty na bázi SSLeay, pak při šifrování např. algoritmem IDEA a 128 bitovým klíčem se asi netřeba ničeho obávat.

 

Na uvedeném serveru jsou též informace o HTTPS serverech Apache a NCSA  a o klientech Mosaic přepracovaných za využití SSLeay, tj. umožňujících celosvětově používat dlouhé klíče. Dále jsou tam informace i o software vyvinutém na SSLeay pro mnohé aplikační protokoly (např. TELNET, FTP,...). Software pro TELNET pres SSL lze nalézt na  http://www.psy.uq.edu.au/~ftp/Crypto/telnet.html. Software pro RSH pres SSL lze např. nalézt na  http://www.quick.com.au/ftp/pub/sjg/ .

 

Vývoj SSLeay byl přerušen v roce 1998 odchodem autora SSLeay Erika A. Younga  do komerční skupiny (z jeho iniciál je odvozena přípona SSLeay).

 

Poslední, avšak nevydanou, verzí SSLeay byla verze 0.9.1b. Na tuto verzi navázala nová skupina vývojářů, kteří přejmenovali projekt na OpenSSL. Oficiální stránky projektu jsou na http://www.openssl.org. V době psaní tohoto textu byla vydána verze 0.9.6a, která oproti SSLeay obsahuje spoustu rozšíření, jak v utilitách a podporovaných standardech, tak také nové začlenění využití kryptogafického hardware.

 

20.1           Popis systému

20.1.1             Instalace

OpenSSL je možné stáhnout, jako programový balík ve formě zdrojových kódů, který je možné přeložit na řadě operačních systémů např. Unix, VMS, MacOS, MS Windows, DOS, apod.

Pro přeložení je nutné mít nainstalovaný Perl a překladač jazyka C. Instalace se provádí ve dvou krocích. Nejprve se pomocí dávky v Perlu  vytvoří několik souborů makefile pro daný operační systém;  ve druhém kroku se překladačem jazyka C přeloží příslušné  zdrojové texty za pomocí vytvořených souborů makefile. Je nutné poznamenat, že na tyto akce jsou připraveny skripty, které vše udělají za vás.

 

Překlad trvá delší dobu, během které je možné si pročíst důležité soubory umístěné v hlavním adresáři, jako např. často kladené otázky (soubor FAQ),  hlavní rysy aplikace (README), změny vůči předchozím verzím (NEWS a CHANGES) a důležité licenční podmínky (LICENSE). Je nutné připomenout, že OpenSSL toolkit je licencován ve stylu licencí Apache, což ve zkratce znamená, že je volně použitelný a šiřitelný pro komerční i nekomerční účely s podmínkou jednoduchých omezení uvedených v licenčních podmínkách.

 

Popišme si ještě strukturu a význam důležitých adresářů a souborů. Adresář apps obsahuje zdroj pro vytvoření spustitelného programu OpenSSL. V certs jsou uloženy testovací certifikáty. Nejdůležitější je adresář crypto, který obsahuje zdrojové texty celého OpenSSL. Je dále  přehledně členěn na jednotlivé skupiny jako např. asn1, x509, apod.  Adresář Doc obsahuje zdroj pro unixovou nápovědu man. V Adresáři  Util jsou skripty pro Perl.

 

Jakmile se nám překlad podařil získali jsme (podle druhu překladu) spustitelný program openssl, dále pak knihovny ssleay, ve kterém je API pro SSL a libeay, ve kterém je API pro veškerou kryptografii a řadu prográmků pro testování funkčnosti.

20.1.2             Použití

OpenSSL je možné používat dvěma způsoby. Buď jako řádkovou utilitu pro provádění kryptografických operací a nebo jako knihovnu API pro využití ve svých programech.

 

V případě že chceme začít programovat s použitím API, tak z důvodu nedostatečné dokumentace (jak to u Open projektů často  bývá) je výhodné hledat inspiraci  přímo ve zdrojových textech spustitelného openssl. Musím říci, že zdrojové texty jsou plné maker, které jsou z počátku nepřehledné, ale postupem času v nich najdete souvislosti. Jestliže vám přesto něco nebude jasné je možné se zeptat v jedné z konferencí, které jsou součástí projektu. Tyto konference jsou velice živé a chválím autory programu, kteří odpovídají promptně na všechny vznesené dotazy. Přihlášení a archiv těchto konferencí najdete na domovské stránce na adrese http://www.openssl.org/support/.

 

Hlavni aplikaci je program openssl*), který spouští jednotlivé aplikace. Program openssl je možné buď spustit bez parametru, pak získáme prompt ze kterého spouštíme aplikace.

 

C:\openssl>  openssl
OpenSSL> aplikace

 

Nebo na příkazovém řádku přímo specifikujeme aplikaci s parametry:

C:\openssl>  openssl aplikace parametry

 

Programy pracující s OpenSSL většinou využívají proměnné prostředí, ve kterých se dají předdefinovat používané adresáře, konfigurační soubory, adresář s certifikáty apod. Ovšem všechny tyto nastavení se dají také specifikovat jako parametry aplikace.

 

Pomoci programu openssl lze spustit následující aplikace:
 

ans1parse

Rozpitvávání zprav v jazyce ASN.1

Ca

Podepisování žádostí o certifikáty a CRL

Ciphers

Seznam podporovaných šifer

crl 

Práce s CRL

crl2pkcs7

Konverze CRL a certifikátu do zprav tvaru PKCS#7

dgst 

Kontrolní součet

dhparam

dh

gendh

Manipulace s Diffle-Hellman parametry

dsa

Manipulace s DSA

dsaparam

Generování DSA parametrů

enc

Šifrování/dešifrování a kódování/dekódování Base64

errstr

Převod chybových kódů na text

errstr

Konverze číselných chybových hlášek na řetězce

gendsa

Generování klíčů z DSA parametrů

genrsa

Generování dvojice soukromý/veřejný klíč pro RSA

nseq

Pro práci s Netscape certifikáty

passwd

Generování a práce s hesly

pkcs12

Export klíče a certifikátu dle normy PKCS#12

pkcs7

Práce se zprávami dle normy PKCS#7

pkcs8

Práce s privátním klíčem dle normy PKCS#8

rand

Generování pseudonáhodných čísel

Req

Generování žádosti o certifikáty dle PKCS#10

rsa

rsautl

Manipulace s RSA klíči

s_client

s_server

s_time

sess_id

Programy pro SSL/TLS spojení

smime

Práce s maily dle normy S/MIME

Speed

Benchmark testy

Spkac

Generování žádosti o certifikát v Netscape formátu (SPK)

Verify

Verifikace certifikátu

version

Vypíše aktuální verzi OpenSSL

x509

Práce s certifikáty dle X509 včetně jejich podepisování

 

Podporované funkce pro kontrolní součet:

md2, md4, md5, mdc2, rmd160, sha, sha1

 

Podporované šifry:

base64, bf, bf-cbc, bf-cfb, bf-ecb, bf-ofb, cast, cast-cbc, cast5-cbc, cast5-cfb, cast5-ecb, cast5-ofb, des, des-cbc, des-cfb, des-ecb, des-ede, des-ede-cbc, des-ede-cfb, des-ede-ofb, des-ede3, des-ede3-cbc, des-ede3-cfb, des-ede3-ofb, des-ofb, des3, desx, idea, idea-cbc, idea-cfb, idea-ecb, idea-ofb, rc2, rc2-40-cbc, rc2-64-cbc, rc2-cbc, rc2-cfb, rc2-ecb, rc2-ofb, rc4, rc4-40, rc5, rc5-cbc, rc5-cfb, rc5-ecb, rc5-ofb

 

Pro výpis všech aplikací zadejte:

$ openssl -?

pro výpis nápovědy k jednotlivým aplikacím zadejte:

$ openssl aplikace -?

 

Příklad:

V kapitole 2.3.10  jme odchytli hlavičku protokolu HTTP, kterou se autentizuje klient:

Authorization: Basic RG9zdGFsZWs6aGVzbG8=

 

Řekli jsme si, že řetězec uvedený zcela vpravo obsahuje Base64 kódované  jméno uživatele a jeho heslo,  nyní  si to můžeme ověřit. Řetězec RG9zdGFsZWs6aGVzbG8= uložíme do souboru vstup.txt.

 

Budeme chtít provést dekódování Base64souboru vstup.txt. Z předchozí tabulky zjistíme, že dekódování provádí aplikací enc. Proto nejprve zjistíme její syntaxi (zkráceno):

 

C:\OpenSSL>openssl enc -?

options are

-in <file>     input file

-out <file>    output fileencrypt

-e             encrypt

-d             decrypt

-a/-base64     base64 encode/decode, depending on encryption flag

-k             key is the next argument

-kfile         key is the first line of the file argument

-K/-iv         key/iv in hex is the next argument

-[pP]          print the iv/key (then exit if -P)

-bufsize <n>   buffer size

 

Pro dekódování použijeme tedy aplikaci enc s parametry:

·         –a, tj. kódování/dekódování Base64,

·          -d, tj. dešifrování/dekódování,

·         -in jméno souboru, tj. zadání jména souboru se vstupními daty.

 

C:\OpenSSL>openssl enc -a -d -in vstup.txt

Dostalek:heslo

 

A nyní již víme, že uživatelem byl uživatel „Dostalek“ s heslem „heslo“.

20.2           Jednoduchá  testovací certifikační autorita

Podívejme se nyní blíže na některé aplikace. Aby výklad nebyl příliš strohý, zadejme si úkol, vytvořit jednoduchou certifikační autoritu CA, která podepíše testovací certifikát.

 

Důležité upozornění: Toto v žádném případe není návod na konstrukci certifikační autority, ale pouze vyklad k programu OpenSSL. Setkávám se často s názorem: "Certifikační autorita není nic náročného - stáhl jsem si z Internetu OpenSSL a během odpoledne mi certifikační autorita chodila". Toto tvrzeni lze přirovnat k tvrzeni: "Dopoledne jsem se naučil jezdit na koloběžce, takže odpoledne už budu řídit letadlo". Certifikační autorita je především zodpovědnost za perfektně pracující tým, který na jedné straně přijímá žádosti o certifikaty a na druhé straně vydává certifikáty. Přitom vydat dva certifikáty různým osobám o se stejným předmětem se rovna krachu cele certifikační autority. Reálná certifiklační autorita podepisuje certifikáty na bezpečném hardware, který je nutné do OpenSSL zakomponovat. Takže dále vydaný certifikát nelze zaměňovat s certifikátem opravdové certifikační autority - např. s http://www.ica.cz.

 

Nejprve si připravíme adresářovou strukturu, kterou později budeme využívat. V nějakém základním adresáři (např. CA) vytvořme adresáře data, data/new_cert, private.

 

Pro správnou funkci některých aplikací je nutné mít připravený konfigurační soubor. Jeho šablona se nachází v souboru apps/openssl.cnf. Tuto šablonu si trochu upravíme a uložíme přímo do souboru CA/a.con:

 

# Konfiguracni souvor OpenSSL pouzivany v nasem pripade 
# Pro generaci zadosti o certifikaty je casto vyzadovan soubor s nahodnym cislem 
#   je ulozen v promenne prostredi (ENV), v domovskem adresari (promenna HOME) 
#   v souboru .rnd 

# RANDFILE              =       $ENV::HOME/.rnd 

#################################################################### 
[ ca ] 
# Defaultni udaje pro CA jsou v sekci CA_DEFAULT: 
default_ca      = CA_default 

#################################################################### 
[ CA_default ] 

dir             = ./data                # Pracovni adresar se jmenuje data 
# $dir obsahuje pracovni adresar (viz predchozi radek):
certs           = $dir/certs            # Adresar s vydanymi certifikaty 
crl_dir         = $dir/crl              # Adresar s vydanymi CRL 
database        = $dir/index            # Databazovy indexovy soubor 
new_certs_dir   = $dir/new_cert         # Adresdar s nove vydanymi cert 

#pro podpis certifikatu c.1 je treba nasl.radek !!!!!!!! 
#certificate    = ./private/CA0.txt    # Certifikat CA 
certificate     = ./private/CA1.txt    # Certifikat CA 
serial          = $dir/serial           # Aktualni seriove cislo cert. 
crl             = $dir/crl.pem          # Aktualni CRL 
private_key     = ./private/klice.pem   # Privatni klic CA 
RANDFILE        = ./private/.rand       # Soubor s priv. nahodnym cislem 

# x509_extensions       = x509v3_extensions     # Pouzita rozsireni X.509 v 3 
default_days    = 365                   # Delka platnosti certifikatu 
default_crl_days= 30                    # how long before next CRL 
default_md      = md5                   # which md to use. 
preserve        = no                    # Zachovavani poradi rozlisitelnych jmen 

# Dale nasleduji pravidla zadavani jednotlivych rozlisitelnych jmen: 
policy          = policy_match 

# Pravidla pro CA: 
[ policy_match ] 
countryName             = match 
# localityName          = match 
# stateOrProvinceName   = match 
organizationName        = match 
# organizationalUnitName        = match 
commonName              = match 
emailAddress            = match 
# Pravidla pro ostatni subjekty: 
[ policy_anything ] 
countryName             = supplied 
stateOrProvinceName     = optional 
localityName            = optional 
organizationName        = optional 
organizationalUnitName  = optional 
commonName              = supplied 
emailAddress            = supplied 

#################################################################### 
# Pro generovani zadosti o certifikat: 
[ req ] 
default_bits            = 1024                  # delka klicu 
default_keyfile         = klice.pem             # soubor s priv.klicem 
distinguished_name      = req_distinguished_name # sekce spec.rozl.jmena 
attributes              = req_attributes        # sekce spec.rozsireni 

[ req_distinguished_name ] 
countryName                     = Oznaceni zeme (2 pismena) 
countryName_value               = CZ 
countryName_min                 = 2 
countryName_max                 = 2 

stateOrProvinceName             = State or Province Name (full name) 
stateOrProvinceName_default     = Morava 

localityName                    = Mesto 
# localityName_value            = Brno 

organizationName                = Nazev organizace 
# organizationName_value        = PVT a.s. 

 organizationalUnitName         = Nazev  organizacni jednotky 
# organizationalUnitName_value  = CA-Martin 

commonName                      = Jmeno 
# commonName_value              = CA-Martin 
commonName_max                  = 64 

emailAddress                    = E-mailova adresa 
# emailAddress_value            = martin.szotkowski@ica.cz 
emailAddress_max                = 40 

 [ req_attributes ] 
challengePassword               = A challenge password
challengePassword_min           = 4 
challengePassword_max           = 20 

 [ x509v3_extensions ] 

 

20.2.1             req

Nejprve je nutné vygenerovat dvojici veřejný/soukromý klíč a nultý certifikát certifikační autority.  Výsledný certifikát bude uložen v souboru private/CA0.txt. Tímto soukromým klíčem pak v následujícím kroku podepíšeme první certifikát certifikační autority. K vytvoření kořenového certifikátu, kterým je právě nultý certifikát, se používá aplikace req s přepínačem –x509. Nyní se vsak vraťme k vytvoření nultého certifikátu:

 

# Vygenerovani dvojice klicu a samopodepsaneho nulteho certifikatu:
$ openssl req -config a.con -new -x509 -text -out private/CA0.txt

 
Using configuration from a.con

Loading 'screen' into random state - done

Generating a 1024 bit RSA private key

................................++++++

........++++++

writing new private key to 'klice.pem'

Enter PEM pass phrase:Pristupove helso k soukr. klici

Verifying password - Enter PEM pass phrase:Pristupove helso k soukr. klici

-----

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Oznaceni zeme (2 pismena) []:CZ

State or Province Name (full name) [Morava]:

Mesto []:Brno

Nazev organizace []:PVT, a.s.

Nazev  organizacni jednotky []:VPV

Jmeno []:CA-Martin

E-mailova adresa []:martin.szotkowski@ica.cz

 

Nejprve byl načten konfigurační soubor a.con z něhož budou vzaty údaje o jménech souboru, délce klíče, ale i o jednotlivých rozlišitelných jménech, které budou součásti certifikátu.

 

Dále byla vygenerována dvojice klíčů. Zadali jsme přístupové heslo (pass phrase) kterým bude zašifrován soukromý klíč uložený v souboru klice.pem (viz konfigurační soubor a.con). Vždy při použiti tohoto soukromého klice bude soukromý klíč zpřístupněn až po zadáni tohoto hesla.

Nakonec jsme dotazováni na rozlišitelná jména do předmětu certifikátu. Opět vše v režii konfiguračního souboru a.con.

 

Výsledný nultý certifikát (private/CA0.txt):

 

Certificate:

    Data:

        Version: 3 (0x2)

        Serial Number: 0 (0x0)

        Signature Algorithm: md5WithRSAEncryption

        Issuer: C=CZ, ST=Morava, L=Brno, O=PVT, a.s., OU=VPV, CN=CA-Martin/Email=martin.szotkowski@ica.cz

        Validity

            Not Before: Jun 13 14:26:10 2001 GMT

            Not After : Jul 13 14:26:10 2001 GMT

        Subject: C=CZ, ST=Morava, L=Brno, O=PVT, a.s., OU=VPV, CN=CA-Martin/Email=martin.szotkowski@ica.cz

        Subject Public Key Info:

            Public Key Algorithm: rsaEncryption

            RSA Public Key: (1024 bit)

                Modulus (1024 bit):

                    00:b3:0d:8f:df:42:01:f9:ae:29:cb:50:8c:a4:30:

                    ad:81:27:41:13:c6:c6:ee:95:7a:e6:2f:8f:fd:ff:

                    cd:ac:25:e3:50:1a:26:44:fc:cd:43:22:64:28:fa:

                    8f:95:48:8f:1f:80:cf:b3:b9:41:58:f3:74:8c:ec:

                    ce:61:5d:92:10:ec:eb:0c:64:4a:2d:ee:f0:8f:5f:

                    2a:3f:63:6a:3a:65:5b:10:ec:79:d7:4b:7a:49:4a:

                    dd:b4:56:1f:3c:d9:6f:7a:55:19:b0:a0:69:8d:24:

                    f6:81:04:ba:3c:e4:cf:de:2b:a4:8e:46:5f:bf:25:

                    e1:81:80:33:ee:09:7d:fb:4b

                Exponent: 65537 (0x10001)

    Signature Algorithm: md5WithRSAEncryption

        a5:86:7d:61:18:f1:7f:7e:14:c2:24:4f:4f:cf:b4:87:03:37:

        1e:5b:03:fd:32:c4:a8:2b:1f:75:b2:a2:a6:f4:af:e4:bf:17:

        b1:d6:ca:85:de:62:6c:0c:00:69:ab:71:fa:41:d6:e4:94:bc:

        ba:8a:f2:a0:2d:e7:ff:76:1e:da:90:da:47:7a:9d:8d:8f:31:

        4d:24:11:7b:e7:3a:a2:6e:0f:9d:79:ed:9c:ca:db:be:c4:22:

        58:42:88:e2:e4:bf:ab:71:91:6b:11:a7:b5:8d:f5:61:8b:42:

        06:4f:ce:3d:00:4b:da:06:3c:39:09:23:5f:0d:d0:28:e4:67:

        6c:30

-----BEGIN CERTIFICATE-----

MIICjjCCAfegAwIBAgIBADANBgkqhkiG9w0BAQQFADCBjDELMAkGA1UEBhMCQ1ox

DzANBgNVBAgTBk1vcmF2YTENMAsGA1UEBxMEQnJubzESMBAGA1UEChMJUFZULCBh

LnMuMQwwCgYDVQQLEwNWUFYxEjAQBgNVBAMTCUNBLU1hcnRpbjEnMCUGCSqGSIb3

DQEJARYYbWFydGluLnN6b3Rrb3dza2lAaWNhLmN6MB4XDTAxMDYxMzE0MjYxMFoX

DTAxMDcxMzE0MjYxMFowgYwxCzAJBgNVBAYTAkNaMQ8wDQYDVQQIEwZNb3JhdmEx

DTALBgNVBAcTBEJybm8xEjAQBgNVBAoTCVBWVCwgYS5zLjEMMAoGA1UECxMDVlBW

MRIwEAYDVQQDEwlDQS1NYXJ0aW4xJzAlBgkqhkiG9w0BCQEWGG1hcnRpbi5zem90

a293c2tpQGljYS5jejCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAsw2P30IB

+a4py1CMpDCtgSdBE8bG7pV65i+P/f/NrCXjUBomRPzNQyJkKPqPlUiPH4DPs7lB

WPN0jOzOYV2SEOzrDGRKLe7wj18qP2NqOmVbEOx510t6SUrdtFYfPNlvelUZsKBp

jST2gQS6POTP3iukjkZfvyXhgYAz7gl9+0sCAwEAATANBgkqhkiG9w0BAQQFAAOB

gQClhn1hGPF/fhTCJE9Pz7SHAzceWwP9MsSoKx91sqKm9K/kvxex1sqF3mJsDABp

q3H6QdbklLy6ivKgLef/dh7akNpHep2NjzFNJBF75zqibg+dee2cytu+xCJYQoji

5L+rcZFrEae1jfVhi0IGT849AEvaBjw5CSNfDdAo5GdsMA==

-----END CERTIFICATE-----

 

Vygenerovaný soukromý klíč (soubor klice.pem - jméno je specifikováno v konfiguračním souboru a.con) jsem přenesl do adresáře private:

 

mv klice.pem private

 

a vypsal (všimněte si, že se jedna o "opravdový"  formát PEM):

-----BEGIN RSA PRIVATE KEY-----

Proc-Type: 4,ENCRYPTED

DEK-Info: DES-EDE3-CBC,42A196E7FDF09711

 

XSWTLBfsn8OE8itehSSWOly/h394rijneFaC58XaUBmH9inxl56Qg5n0LaV8Kwvl

edlVEdttshbwRqeUuvOsmsQNchpMbyCNH64fp+lVmzo90MuE80TrlY86bDZ907gB

xWI9jWxmjPx5TMWRwQx/rG//xlJn2RBwpeBqHjw+eNB/TzubuyPq4nraSysF/mlr

Ahxg5L2nxFuUSvsjtAkyJNDT0PGOZ1uACcTsaY0uaty1Vtb/ptk+4zgoi8SHXYjr

YEtIJ616vnHny96Zo9BeCo7moBnOnEOuaoUbms0zaItewe2k9cSYyM0YwDnuzTfE

kfYiqTCPrf0C3vllUFnbWtPTtftY9Wik/I+8PH5STComWmWXOGKD7yiwMceNVi8c

Csi/xs6FdwirNSgtLgZH6DmrmMpU4WSLelXIMoPdoyKexENyT0+rhFcef38QCt77

AwphqIHWVl6fXMKJBMBTh65msEkDDW1Y2q2z9Ep5iReH8PQCzymSZ/T2mmuTqIgc

fmaT8aQpaAIzdLXvQmqo4z3HRLLqbsZigg46+D2udWH7n9rEqEyjLJiamBHbsHUu

CrJr+wIYWQSimtfIDCMt3IOgWwcsQqiJJBbOnTVYVmQ6QgbMXtnV2ijJMmlhoadl

hxdZIS5aVa0Rb7IR4+kZe3Jy4phGg/1GllJdPRt369kBUrLScSEa9dddGUT5hCzY

vqyjjv7/ZDq3GGeb64m2ubfzLGif91ZB88QY/Rgq45XmkoVL2wXLf734Lzg5qU03

xvFfPktE41PKsqLOmwwqhIuown+MSdCJtXQODyLzFbg=

-----END RSA PRIVATE KEY-----

 

20.2.2             ca

Pro správnou činnost naší testovací certifikační autority jsou nezbytné dvě databáze:

# Vytvorime prazdny soubor pro databazi předmětů ./data/index
$ echo 0> .\data\index

# Vytvirune soubor s aktualnim cislem certifikatu
#  vlozime do nej hodnotu 01
$ echo 01 > .\data\serial

 

Nyní již můžeme přistoupit k vytvořeni certifikátu číslo 1, který uložíme do souboru CA1.txt v adresáři private. Jako žádost využijeme kořenový certifikát ze souboru  CA0.txt, který se nachází ve stejném adresáři (přepínač  –ss_cert).

 

Poznámka: v konfiguračním souboru a.con je nutné upravit řádek s názvem soboru certifikátu CA (je označen vykřičníky) na CA0.txt.

 

# Vytvoreni certifikatu cislo 1:
$ openssl ca -config a.con –ss_cert private/CA0.txt -out private/CA1.txt

Using configuration from a.con

Loading 'screen' into random state - done

Enter PEM pass phrase:

Check that the request matches the signature

Signature ok

The Subjects Distinguished Name is as follows

countryName           :PRINTABLE:'CZ'

stateOrProvinceName   :PRINTABLE:'Morava'

localityName          :PRINTABLE:'Brno'

organizationName      :PRINTABLE:'PVT, a.s.'

organizationalUnitName:PRINTABLE:'VPV'

commonName            :PRINTABLE:'CA-Martin'

emailAddress          :IA5STRING:'martin.szotkowski@ica.cz'

Certificate is to be certified until Jun 14 07:08:07 2002 GMT (365 days)

Sign the certificate? [y/n]:y

 

 

1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries

Data Base Updated

 

 

Opět byl nejprve načten soubor a.con, pote následovala výzva o zadaní přístupového hesla k soukromému klíči. Je vypsán předmět certifikátu a jsme dotázáni, zda-li se má certifikát vytvořit.

 

Poslední dva řádky vyjadřuji skutečnost, ze databáze předmětů certifikátů byla doplněna o předmět  nove vytvořeného certifikátu.

 

Jak jsme  uvedli v kapitole o certifikačních autoritách, tak žádost o vydáni certifikátu musí byt podepsána soukromým klíčem příslušejícím k veřejnému klíči uvedeném v žádosti. Nepodepsané nebo neplatně podepsané žádosti CA neakceptuje a to ani ta naše testovací.

 

Výsledný certifikát je mezi závorkami: „BEGIN CERTIFICATE“ a „END CERTIFICATE“. Úvodní text je v podstatě jen pro člověka čitelná poznámka (certifikát ve formátu PEM je zase lepe čitelný pro počítač):
 
Using configuration from a.con
Enter PEM pass phrase:
Check that the request matches the signature  (kontrola podpisu na zadosti o certifikat)
Signature ok
Jedinecne jmeno:
countryName           :PRINTABLE:'CZ'
stateOrProvinceName   :PRINTABLE:'Cechy'
localityName          :PRINTABLE:'Ceske Budejovice'
organizationName      :PRINTABLE:'PVT,a.s.'
organizationalUnitName:PRINTABLE:'VCU'
commonName            :PRINTABLE:'CA'
emailAddress          :IA5STRING:'dostalek@pvt.net'
Datum ukonceni platnosti certifikatu je Mar 14 10:00:50 1999 GMT (365 dni)
Vytvorit certifikat ? [y/n]:y

Write out database with 1 new entries
Data Base Updated

 



*) Ve starších verzích označovaných jako SSLeay se na místo programu openssl používal program ssleay, ale vše ostatní bylo obdobné.