SSL aplikace

Hlavní aplikací je program ssleay, který spouští jednotlivé aplikace. Program ssleay je možné buď spustit bez parametrů, pak získáme prompt ze kterého spouštíme aplikace.

$ ssleay
SSLeay> aplikace

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

$ ssleay aplikace parametry

Programy pracující s SSLeay většinou využívají proměnné prostředí:

Pomocí programu ssleay lze spustit následující aplikace:
 
dgst  Kontrolní součet
enc Šifrování/dešifrování a kódování/dekódování Base64
ans1parse Rozpitvávání zpráv v jazyce ASN.1
dh Manipulace s Diffle-Hellman parametery
rsa Manipulace s RSA kíči
crl  Práce s CRL
x509 Práce s certifikáty dle X509 včetně jejich podepisování
pkcs7 Práce se zprávami dle normy PKCS#7
genrsa Generování dvojice soukromý/veřejný klíč pro RSA
gendh Generování  Diffle-Hellman parameterů
req Generování žádosti o certifikáty dle PKCS#10
s_client 
s_server 
s_time 
s_mult 
s_filter
Příklady programů
errstr Konverze číslených chybových hlášek na řetězce
ca Podepisování žádostí o certifikáty a CRL
crl2pkcs7 Konverze CRL a certifikátů do zpráv tvaru PKCS#7
speed Benchmark testy
verify Verifikace certifikátu
 

Prvním problémem s programem ssleay byla skutečnost, že jsem nebyl schopen vytvořit ani žádost o certifikát. Po několika dnech trápení jsem se musel nechat podat. Zkušený programátor ing. R. Valášek z Brna mi poradil, že naprosto zásadní roli hraje konfikurační soubor a poslal mi jeho příklad, ktery mu fungoval.  Já jsem si jej mírně oeditoval a nazval a.con

$ cat a.con
 
# 
# Konfiguracni souvor SSLeay 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 pracovní adresář (viz předchozí řádek):
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/CA1cert.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 
# telefon                       = match 

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

#################################################################### 
# 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-Libor 

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

emailAddress                    = E-mailova adresa 
# emailAddress_value            = dostalek@pvt.net 
emailAddress_max                = 40 

telefon                         = Telefon 
# telefon_default                       = (05)7269464 

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

unstructuredName                = An optional company name 

[ x509v3_extensions ] 

nsCaRevocationUrl               = http://info.pvt.net 
#nsComment                      = "This is a comment" 

nsCertType                      = yes 
nsBaseUrl                       = "http://info.pvt.net" 
#nsRevocationUrl 
#nsRenewalUrl 
#nsCaPolicyUrl 
#nsSslServerName 
#nsCertSequence 
#nsCertExt 
#nsDataType 

Teprve poté se karta obratila a pohnul jsem se mírně kupředu.


Jednoduchá testovací certifikační autorita

Mým cílem je si vytvořit  jednoduchou certifikační autoritu CA, kterou si podepiši testovací certifikáty.

Důležité upozornění: Toto v žádném případě není návod na konstrukci certifikační autority, ale pouze výklad k programu ssleay (takový návod jsem uvedl v kapitole  Schéma CA ). Často se na svých přednáškách setkávám s názorem: "Certifikační autorita nic není máročného - stahl jsem si z Internetu ssleay a během odpoledne mi certifikační autorita chodila". Toto tvrzení lze přirovnat k tvrzení: "Dopoledne jsem se naučil jezdít na koloběžce, takže odpoledne už budu řídít 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 certifikáty a na druhé straně vydává certifkáty. Přitom vydat dva certifikáty o stejné identifikaci se rovná krachu celé certifikační autority. Certifikáty se podepisují na bezpečném hardware a ssleay (pokud vím) bezpečný hardware tč. vůbec nepodporuje. Takže takto připravený certifikát nelze zaměňovat s certifikátem opravdové certifikační autority - např. http://www.ica.cz .

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. Nyní se však vraťme k nultému certifikátu:

# Vygenerovani dvojice klicu a samopodepsaneho nulteho certifikatu:
$ ssleay req -config a.con -new -x509 -text -out private/CA0.txt
 
Using configuration from a.con
Generating a 1024 bit RSA private key
...............................................................+++++
.......+++++
writing new private key to 'klice.pem'
Enter PEM pass phrase: Přístupové heslo k soukr.klíči
Verifying password - Enter PEM pass phrase: Přístupové heslo k soukr.klíči
-----
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]:Cechy
Mesto []:Ceske Budejovice
Nazev organizace []:PVT,a.s.
Nazev  organizacni jednotky []:VCU
Jmeno []:CA
E-mailova adresa []:dostalek@pvt.net

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

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

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

Výsledný nultý certifikát (private/CA0.txt):
 
cbu.pvtnet.cz> cat CA0* 
Certificate: 
    Data: 
        Version: 1 (0x0) 
        Serial Number: 0 (0x0) 
        Signature Algorithm: md5WithRSAEncryption 
        Issuer: C=CZ, ST=Cechy, L=Ceske Budejovice, O=PVT,a.s., OU=VCU, CN=CA/Email=dostalek@pvt.net 
        Validity 
            Not Before: Mar 14 10:55:40 1998 GMT 
            Not After : Apr 13 10:55:40 1998 GMT 
        Subject: C=CZ, ST=Cechy, L=Ceske Budejovice, O=PVT,a.s., OU=VCU, CN=CA/Email=dostalek@pvt.net 
        Subject Public Key Info: 
            Public Key Algorithm: rsaEncryption 
            RSA Public Key: (1024 bit) 
                Private-Key: (1024 bit) 
                modulus: 
                    00:d6:bd:0f:e6:14:1a:8c:86:e1:dc:08:51:08:72: 
                    c0:67:74:55:c0:13:db:42:b7:88:b4:20:4c:52:4f: 
                    e5:25:1d:ed:e8:c4:b7:ac:40:df:45:ce:97:a6:66: 
                    b2:c2:58:31:d5:9b:37:4e:52:ea:a9:5c:b8:ff:b5: 
                    71:c6:95:67:81:81:71:32:27:4f:b0:f7:f9:6c:6a: 
                    9c:d1:92:7c:20:a6:f1:f3:1d:65:7d:cf:3d:1b:10: 
                    24:80:fe:e0:25:c7:fb:27:51:2d:5a:36:4e:2b:37: 
                    77:33:dd:b2:93:2b:f3:ea:cd:36:ba:f1:9e:dc:52: 
                    f6:ef:d2:a6:36:59:da:a6:31 
                publicExponent: 65537 (0x10001) 
                privateExponent: 
                    31:0c:23:ea:80:63:03:ff:f6:ec:a3:f5:a6:41:57: 
                    93:09:ae:60:5d:e8:b1:d7:6b:e1:00:93:8e:25:73: 
                    88:43:ca:c8:64:ce:33:08:ea:36:6e:96:92:ca:58: 
                    40:2d:96:cc:5c:54:88:8e:45:cd:03:41:ba:1e:3e: 
                    6b:86:4a:8a:8d:91:a9:e9:7b:09:43:58:91:91:78: 
                    ad:06:9c:35:71:6c:74:fb:f0:b7:ff:c3:a0:4a:06: 
                    cc:72:ca:1d:7a:4d:03:3b:37:8a:a8:95:ba:52:25: 
                    12:6b:ff:60:1c:c1:79:dc:76:94:c7:b5:10:89:74: 
                    4e:93:40:05:98:3e:95:41 
                prime1: 
                    00:fd:56:60:3b:cf:9e:57:15:f7:5d:b5:66:62:04: 
                    56:2d:d4:f6:44:db:c6:de:20:8f:ee:95:d3:f3:c0: 
                    1d:c8:7e:a3:26:aa:67:0c:21:37:26:72:c4:57:7b: 
                    d0:6c:80:43:b7:f6:8b:52:dc:f9:e0:85:a4:49:76: 
                    7c:ee:3c:af:29 
                prime2: 
                    00:d8:fe:d5:37:d8:34:2d:13:99:d1:ac:f0:3c:f2: 
                    c9:a4:31:e5:7e:ac:05:b4:98:09:43:ac:a1:6b:cf: 
                    6c:c5:e5:41:ca:0a:ff:9c:e3:a7:e1:12:dc:2c:12: 
                    9a:ee:a0:4b:a3:bc:b3:9b:c8:c5:c2:12:7b:23:6b: 
                    53:d4:73:07:c9 
                exponent1: 
                    00:b6:b1:b9:c8:a8:5b:49:f6:3f:63:c6:d3:c4:cf: 
                    d7:ce:49:8c:27:f0:4e:a4:15:db:76:75:7a:5a:88: 
                    2b:72:51:51:1b:2b:3c:11:15:4b:0e:61:29:92:e5: 
                    69:53:35:d4:a0:30:1e:1d:6d:da:8d:be:12:d2:1f: 
                    ae:cc:a7:da:b1 
                exponent2: 
                    7e:9d:33:0c:42:bb:2f:12:20:ce:97:7a:16:16:14: 
                    52:1a:4b:2e:7e:71:55:ce:e0:98:fc:41:b4:06:74: 
                    11:84:93:be:b0:6c:35:bf:20:55:d4:0b:64:2b:f6: 
                    fb:05:cd:1c:dd:1e:6f:e7:d6:7c:47:0c:52:be:6d: 
                    4b:a9:53:01 
                coefficient: 
                    00:c1:f5:3a:a4:a7:c8:64:2a:d8:c1:0c:3b:15:82: 
                    1e:e8:1a:ee:56:77:b0:ef:86:2c:d6:94:98:f2:80: 
                    a4:61:fc:c1:ea:f9:66:d4:02:21:d3:17:5f:28:45: 
                    88:81:48:8e:e9:be:3c:82:12:f1:80:d6:7a:12:c2: 
                    99:eb:a1:c9:03 
    Signature Algorithm: md5WithRSAEncryption 
        28:e0:ae:c3:2a:3b:64:d4:9b:71:44:c7:0f:43:20:aa:a1:60: 
        99:67:9a:21:97:d9:bf:a4:12:4d:30:8c:56:b6:a6:78:e6:fd: 
        f7:29:41:f8:0a:14:ea:b4:33:04:61:a3:f1:3d:5a:4f:0f:01: 
        c8:0f:d8:7c:52:81:e0:52:53:2b:28:74:00:d3:5b:c8:5b:72: 
        b8:59:6c:ca:53:0b:3a:30:d7:b2:cd:bf:b8:fb:5f:bc:bd:1b: 
        fc:13:46:d1:12:10:57:0c:85:2d:d2:9a:74:99:d9:75:86:2c: 
        e2:95:f1:65:61:de:09:cd:91:30:c7:a5:c1:32:67:b0:e5:b8: 
        38:69 
-----BEGIN CERTIFICATE----- 
MIICfzCCAegCAQAwDQYJKoZIhvcNAQEEBQAwgYcxCzAJBgNVBAYTAkNaMQ4wDAYD 
VQQIEwVDZWNoeTEZMBcGA1UEBxMQQ2Vza2UgQnVkZWpvdmljZTERMA8GA1UEChMI 
UFZULGEucy4xDDAKBgNVBAsTA1ZDVTELMAkGA1UEAxMCQ0ExHzAdBgkqhkiG9w0B 
CQEWEGRvc3RhbGVrQHB2dC5uZXQwHhcNOTgwMzE0MTA1NTQwWhcNOTgwNDEzMTA1 
NTQwWjCBhzELMAkGA1UEBhMCQ1oxDjAMBgNVBAgTBUNlY2h5MRkwFwYDVQQHExBD 
ZXNrZSBCdWRlam92aWNlMREwDwYDVQQKEwhQVlQsYS5zLjEMMAoGA1UECxMDVkNV 
MQswCQYDVQQDEwJDQTEfMB0GCSqGSIb3DQEJARYQZG9zdGFsZWtAcHZ0Lm5ldDCB 
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1r0P5hQajIbh3AhRCHLAZ3RVwBPb 
QreItCBMUk/lJR3t6MS3rEDfRc6Xpmaywlgx1Zs3TlLqqVy4/7VxxpVngYFxMidP 
sPf5bGqc0ZJ8IKbx8x1lfc89GxAkgP7gJcf7J1EtWjZOKzd3M92ykyvz6s02uvGe 
3FL279KmNlnapjECAwEAATANBgkqhkiG9w0BAQQFAAOBgQAo4K7DKjtk1JtxRMcP 
QyCqoWCZZ5ohl9m/pBJNMIxWtqZ45v33KUH4ChTqtDMEYaPxPVpPDwHID9h8UoHg 
UlMrKHQA01vIW3K4WWzKUws6MNeyzb+4+1+8vRv8E0bREhBXDIUt0pp0mdl1hizi 
lfFlYd4JzZEwx6XBMmew5bg4aQ== 
-----END CERTIFICATE----- 

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

a vypsal (všiměte si, že se jedná o "opravdový"  formát PEM):
 
-----BEGIN RSA PRIVATE KEY----- 
Proc-Type: 4,ENCRYPTED 
DEK-Info: DES-EDE3-CBC,14304185F4CAFF78 

gZrNi2mfGijRqJthTSFV7dD3zVGlhn9tHgRxUEX0g+zgtZhvX8RtyMn7ryqOBbhs 
9V5yhbb6fouFNAfEWuw38IyTG7KfeMfm8TrTVZWxGuxDEkMEbDYvg4mw3MnWoYVk 
okqpl1F0fnZxnHa5x1AGyFaAc5dr3hhqV1fBTz2bcN78ZTTRASzR7JDKiF0SKhae 
EZNAkrSTMrA/5wiNh3tvuOwpj7Blsg3HO7m87vOx5m0yJ3o1FZh41as2AYd9I9Ky 
pXyFFdgM45kgOTZz+CLNO9eBUTxgeicbffbavOlmKxmhkEbADCVYeMi4VEWDB52B 
HBvRZzZtE+YGYGoSqizm/IodqkvL9G/x3RcWGRVPoL0vU5LUuGiI7yF1OH2BsqgC 
x0vlrBLA05YWXn2ENdHXvEKc7hcWbnyXF675e2tMyyBqdm6DWU6VquIubGhM0Z5h 
geVoWdxuexLZrZIlK4AfCbVH2LYZcSbwLSXpUYcH53acWgY0kB3eRob/W0H+9ba+ 
b7vVjkOpDXDMmfSkaZTR1z1/+I12Csty1LLilFGmHvasE0BF1hPojtL5a1IJs27T 
n8q8xygW4WPuKKDXew/y7uMAijOof4YFmZai1Eu2zh+F7TFCjrv3ZIM1VT0Xfyv6 
VPvhb8E/KLBBzOnZyTfoiPq95+XCIY7Ivyj2IZxWq+Ia2mTA0X6Lielbi2vBW38f 
LTmqxabOPRNcH75bIRXwL/WZRUr+39iLa0Re7QUgVZ17Uq1Rd6Byz7C2ckLYgI74 
6FPOdNCjXA849gmRPg0uQ+y7EFe9QQFgkgHR7nbE4gXBKUfI/0xREw== 
-----END RSA PRIVATE KEY----- 



Nyní můžeme již vygenerovat žádost o první certifikát certifikační autority:
 
$ ssleay req -config a.con -new  -out private/CA1.txt -key private/klice.pem
 
Using configuration from a.con
Enter PEM pass phrase: Přístupové heslo k soukr.klíči
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]:Cechy
Mesto []:Ceske Budejovice
Nazev organizace []:PVT,a.s.
Nazev  organizacni jednotky []:VCU
Jmeno []:CA
E-mailova adresa []:dostalek@pvt.net

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:libor
An optional company name []:libor
 
Opět byl načten konfigurační soubor a.con v jehož režiji běží vygenerování žádosti. Jsme dotázáni na přístupové heslo k soukromému klíči a rozlišitelná jména do subjectu certifikátu.

Žádost o certifikát ve formátu "PEM":
 
-----BEGIN CERTIFICATE REQUEST----- 
MIIB9DCCAV0CAQAwgYcxCzAJBgNVBAYTAkNaMQ4wDAYDVQQIEwVDZWNoeTEZMBcG 
A1UEBxMQQ2Vza2UgQnVkZWpvdmljZTERMA8GA1UEChMIUFZULGEucy4xDDAKBgNV 
BAsTA1ZDVTELMAkGA1UEAxMCQ0ExHzAdBgkqhkiG9w0BCQEWEGRvc3RhbGVrQHB2 
dC5uZXQwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANa9D+YUGoyG4dwIUQhy 
wGd0VcAT20K3iLQgTFJP5SUd7ejEt6xA30XOl6ZmssJYMdWbN05S6qlcuP+1ccaV 
Z4GBcTInT7D3+WxqnNGSfCCm8fMdZX3PPRsQJID+4CXH+ydRLVo2Tis3dzPdspMr 
8+rNNrrxntxS9u/SpjZZ2qYxAgMBAAGgLDAVBgkqhkiG9w0BCQcxCBMGbGlib3IA 
MBMGCSqGSIb3DQEJAjEGFgRQVlQAMA0GCSqGSIb3DQEBBAUAA4GBAJfzUrKZYVAA 
zLydS8cvNvOPbelaiisiEieI0WpsJXbEl/bggc+C3bc/1B33rKu+TLPkiKzUJF8f 
M+r2JpkTkhon4LPMctLCbnQBBu0J7gSZGLETQt5Qp4tQv4jTwdBhb/foOfWYI8i0 
6E2zzRfazZ8lnHM7pCovfeyQrBcB5XJQ 
-----END CERTIFICATE REQUEST----- 


Pro správnou činnost certifikační autority jsou naprosto klíčové dvě databáze:

Zásadní útoky proti CA jsou:
  1. Pokus o zcizení soukromého klíče CA - to je většinou nemožné, protože tento klíč by měl být u opravdové CA uložen v bezpečném hardware.
  2. Pokus o vydání certifikátu se subjectem již vydaného certifikátu a následné podvržení takovéhoto certifikátu za dříve vydaný certifikát. Tj. útok proti databázi subjectů. Tato databáze může být značně rozsáhlá, proto její uložení do bezpečného hardware je problematické. Avšak alespon kontrolní součet této databáze by měl být u opravdové CA v bezpečném hardware.
  3. Pokus o vydání certifikátu se sériovým číslem již jednou vydaného certifikátu a následné podvržení za již vydaný certifikát. Tj. útok proti sériovému číslu.
# Vytvorime prazdny soubor pro databazi subjectu ./data/index
$ cp /dev/null ./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ření certifikátu číslo 1, který uložíme do souboru CA1cert.txt v adresáři private (žádost o certifikát byla již dříve uložena do souboru CA1.txt v témže adresáři):
 
# Vytvoreni certifikatu cislo 1:
$ ssleay ca -config a.con -in private/CA1.txt  -out private/CA1cert.txt
 
Using configuration from a.con
Enter PEM pass phrase:
Check that the request matches the signature  (kontrola podpisu na žádosti o certifikát)
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
 
(České hlášky jsou důsledkem toho, že jsem použil program ssleay od R.Valáška, který si pravděpodobně poupravil i zdrojový text.)

Opět byl nejprve načten soubor a.con, poté následovala výzva o zadání přístupového hesla k soukromému klíči. Je vypsán subject certifikátu a jsme dotázání, zda-li se má cetrtifikát vytvořit. Poslední dva řádky vyjadřují skutečnost, že databáze subjectů byla doplněna o subject z nově vytvořeného certifikátu.

Jak jsme si uvedli v kapitole o certifikačních autoritách, tak žádost o vydání certifikátu musí být podepsána soukromými 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 moje testovací CA.

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 lépe čitelný pro počítač):
 
issuer :/C=CZ/ST=Cechy/L=Ceske Budejovice/O=PVT,a.s./OU=VCU/CN=CA/Email=dostalek@pvt.net 
subject:/C=CZ/O=PVT,a.s./CN=CA/Email=dostalek@pvt.net 
serial :01 

Certificate: 
    Data: 
        Version: 1 (0x0) 
        Serial Number: 1 (0x1) 
        Signature Algorithm: md5WithRSAEncryption 
        Issuer: C=CZ, ST=Cechy, L=Ceske Budejovice, O=PVT,a.s., OU=VCU, CN=CA/Email=dostalek@pvt.net 
        Validity 
            Not Before: Mar 14 11:04:44 1998 GMT 
            Not After : Mar 14 11:04:44 1999 GMT 
        Subject: C=CZ, O=PVT,a.s., CN=CA/Email=dostalek@pvt.net 
        Subject Public Key Info: 
            Public Key Algorithm: rsaEncryption 
            RSA Public Key: (1024 bit) 
                Modulus (1024 bit): 
                    00:d6:bd:0f:e6:14:1a:8c:86:e1:dc:08:51:08:72: 
                    c0:67:74:55:c0:13:db:42:b7:88:b4:20:4c:52:4f: 
                    e5:25:1d:ed:e8:c4:b7:ac:40:df:45:ce:97:a6:66: 
                    b2:c2:58:31:d5:9b:37:4e:52:ea:a9:5c:b8:ff:b5: 
                    71:c6:95:67:81:81:71:32:27:4f:b0:f7:f9:6c:6a: 
                    9c:d1:92:7c:20:a6:f1:f3:1d:65:7d:cf:3d:1b:10: 
                    24:80:fe:e0:25:c7:fb:27:51:2d:5a:36:4e:2b:37: 
                    77:33:dd:b2:93:2b:f3:ea:cd:36:ba:f1:9e:dc:52: 
                    f6:ef:d2:a6:36:59:da:a6:31 
                Exponent: 65537 (0x10001) 
    Signature Algorithm: md5WithRSAEncryption 
        aa:ba:0d:d6:90:ed:f5:fb:78:54:51:6c:d7:5c:82:ba:0a:2e: 
        61:c7:ca:81:70:f0:a0:75:58:77:26:42:5d:14:43:39:af:d8: 
        07:fd:95:b8:36:01:fa:45:f6:f4:2b:3e:f2:76:98:ec:61:6d: 
        15:dc:19:b0:a7:ba:3c:ff:0b:bc:8f:f8:c7:61:04:cd:27:33: 
        78:ea:a2:ce:21:f9:f1:84:d6:38:35:ee:19:23:d8:f6:c5:c5: 
        ce:87:5c:86:c5:a3:4e:3a:d2:66:f8:fb:63:72:fa:cb:85:f0: 
        eb:44:ce:53:bb:c6:d8:61:2f:fd:2d:a0:f8:dc:87:09:cf:74: 
        48:d4 

-----BEGIN CERTIFICATE----- 
MIICRTCCAa4CAQEwDQYJKoZIhvcNAQEEBQAwgYcxCzAJBgNVBAYTAkNaMQ4wDAYD 
VQQIEwVDZWNoeTEZMBcGA1UEBxMQQ2Vza2UgQnVkZWpvdmljZTERMA8GA1UEChMI 
UFZULGEucy4xDDAKBgNVBAsTA1ZDVTELMAkGA1UEAxMCQ0ExHzAdBgkqhkiG9w0B 
CQEWEGRvc3RhbGVrQHB2dC5uZXQwHhcNOTgwMzE0MTEwNDQ0WhcNOTkwMzE0MTEw 
NDQ0WjBOMQswCQYDVQQGEwJDWjERMA8GA1UEChMIUFZULGEucy4xCzAJBgNVBAMT 
AkNBMR8wHQYJKoZIhvcNAQkBFhBkb3N0YWxla0BwdnQubmV0MIGfMA0GCSqGSIb3 
DQEBAQUAA4GNADCBiQKBgQDWvQ/mFBqMhuHcCFEIcsBndFXAE9tCt4i0IExST+Ul 
He3oxLesQN9FzpemZrLCWDHVmzdOUuqpXLj/tXHGlWeBgXEyJ0+w9/lsapzRknwg 
pvHzHWV9zz0bECSA/uAlx/snUS1aNk4rN3cz3bKTK/PqzTa68Z7cUvbv0qY2Wdqm 
MQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAKq6DdaQ7fX7eFRRbNdcgroKLmHHyoFw 
8KB1WHcmQl0UQzmv2Af9lbg2AfpF9vQrPvJ2mOxhbRXcGbCnujz/C7yP+MdhBM0n 
M3jqos4h+fGE1jg17hkj2PbFxc6HXIbFo0460mb4+2Ny+suF8OtEzlO7xthhL/0t 
oPjchwnPdEjU 
-----END CERTIFICATE----- 

Do databáze index přibude věta:
V       990314110444Z           01      unknown /C=CZ/O=PVT,a.s./CN=CA/Email=dostalek@pvt.net

a obsah souboru serial bude:
02


Vytvořený certifikát je ve formátu PEM. Chceme-li jej převést do formátu DER, pak použijeme příkaz:
 
# Prevod certifikatu z PEM do DER
$ ssleay x509  -inform PEM -outform DER -in  private/CA1cert.txt -out private/CA1cert.der

Chceme-li převést certifikát do textového tvaru, pak použijeme příkaz:

# Prevod certifikatu z PEM do textoveho tvaru
$ ssleay asn1parse  -inform DER  -in  private/CA1cert.der

Takto konvertovaný certifikát do pro člověka čitelné podoby bude mít tvar:
 
    0:d=0  hl=4 l= 581 cons: SEQUENCE 
    4:d=1  hl=4 l= 430 cons: SEQUENCE 
    8:d=2  hl=2 l=   1 prim: INTEGER           :01 
   11:d=2  hl=2 l=  13 cons: SEQUENCE 
   13:d=3  hl=2 l=   9 prim: OBJECT            :md5WithRSAEncryption 
   24:d=3  hl=2 l=   0 prim: NULL 
   26:d=2  hl=3 l= 135 cons: SEQUENCE 
   29:d=3  hl=2 l=  11 cons: SET 
   31:d=4  hl=2 l=   9 cons: SEQUENCE 
   33:d=5  hl=2 l=   3 prim: OBJECT            :countryName 
   38:d=5  hl=2 l=   2 prim: PRINTABLESTRING   :CZ 
   42:d=3  hl=2 l=  14 cons: SET 
   44:d=4  hl=2 l=  12 cons: SEQUENCE 
   46:d=5  hl=2 l=   3 prim: OBJECT            :stateOrProvinceName 
   51:d=5  hl=2 l=   5 prim: PRINTABLESTRING   :Cechy 
   58:d=3  hl=2 l=  25 cons: SET 
   60:d=4  hl=2 l=  23 cons: SEQUENCE 
   62:d=5  hl=2 l=   3 prim: OBJECT            :localityName 
   67:d=5  hl=2 l=  16 prim: PRINTABLESTRING   :Ceske Budejovice 
   85:d=3  hl=2 l=  17 cons: SET 
   87:d=4  hl=2 l=  15 cons: SEQUENCE 
   89:d=5  hl=2 l=   3 prim: OBJECT            :organizationName 
   94:d=5  hl=2 l=   8 prim: PRINTABLESTRING   :PVT,a.s. 
  104:d=3  hl=2 l=  12 cons: SET 
  106:d=4  hl=2 l=  10 cons: SEQUENCE 
  108:d=5  hl=2 l=   3 prim: OBJECT            :organizationalUnitName 
  113:d=5  hl=2 l=   3 prim: PRINTABLESTRING   :VCU 
  118:d=3  hl=2 l=  11 cons: SET 
  120:d=4  hl=2 l=   9 cons: SEQUENCE 
  122:d=5  hl=2 l=   3 prim: OBJECT            :commonName 
  127:d=5  hl=2 l=   2 prim: PRINTABLESTRING   :CA 
  131:d=3  hl=2 l=  31 cons: SET 
  133:d=4  hl=2 l=  29 cons: SEQUENCE 
  135:d=5  hl=2 l=   9 prim: OBJECT            :emailAddress 
  146:d=5  hl=2 l=  16 prim: IA5STRING         :dostalek@pvt.net 
  164:d=2  hl=2 l=  30 cons: SEQUENCE 
  166:d=3  hl=2 l=  13 prim: UTCTIME           :980314110444Z 
  181:d=3  hl=2 l=  13 prim: UTCTIME           :990314110444Z 
  196:d=2  hl=2 l=  78 cons: SEQUENCE 
  198:d=3  hl=2 l=  11 cons: SET 
  200:d=4  hl=2 l=   9 cons: SEQUENCE 
  202:d=5  hl=2 l=   3 prim: OBJECT            :countryName 
  207:d=5  hl=2 l=   2 prim: PRINTABLESTRING   :CZ 
  211:d=3  hl=2 l=  17 cons: SET 
  213:d=4  hl=2 l=  15 cons: SEQUENCE 
  215:d=5  hl=2 l=   3 prim: OBJECT            :organizationName 
  220:d=5  hl=2 l=   8 prim: PRINTABLESTRING   :PVT,a.s. 
  230:d=3  hl=2 l=  11 cons: SET 
  232:d=4  hl=2 l=   9 cons: SEQUENCE 
  234:d=5  hl=2 l=   3 prim: OBJECT            :commonName 
  239:d=5  hl=2 l=   2 prim: PRINTABLESTRING   :CA 
  243:d=3  hl=2 l=  31 cons: SET 
  245:d=4  hl=2 l=  29 cons: SEQUENCE 
  247:d=5  hl=2 l=   9 prim: OBJECT            :emailAddress 
  258:d=5  hl=2 l=  16 prim: IA5STRING         :dostalek@pvt.net 
  276:d=2  hl=3 l= 159 cons: SEQUENCE 
  279:d=3  hl=2 l=  13 cons: SEQUENCE 
  281:d=4  hl=2 l=   9 prim: OBJECT            :rsaEncryption 
  292:d=4  hl=2 l=   0 prim: NULL 
  294:d=3  hl=3 l= 141 prim: BIT STRING 
  438:d=1  hl=2 l=  13 cons: SEQUENCE 
  440:d=2  hl=2 l=   9 prim: OBJECT            :md5WithRSAEncryption 
  451:d=2  hl=2 l=   0 prim: NULL 
  453:d=1  hl=3 l= 129 prim: BIT STRING 

Jenže co znamenají d, hl a l?  Musíme se vrátit ke kódování BER (DER je podmnožina BER), kde jednotlivé objekty (v terminologii BER "data") jsou složeny ze třech částí:

  1. Typu dat
  2. Délky
  3. Vlastních dat
Jenže strukturovaná data se skládají z dalších dat o obdobné struktuře, takže u strukturovaných dat zůstává jen jakási hlavička obsahující typ a délku. Strukturovaná data jsou do sebe vnořena. Hloubka vnoření (depht) je vyjádřena číslem d. Délka hlavičky (header length) je vyjádřena pomocí hl a vlastní délka dat číslem l (length).

Nyní můžeme přejít k vydávání certifikátů pro uživatele (zákazníky naší testovací CA)


Certifikát uživatele

Uživatel si nejprve musí vygenerovat dovjici soukromý/veřejný klíč a žádost o certifikát

$ ssleay req -config a.con -new -newkey rsa:512 > req.txt

Opět použijeme konfigurační soubor a.con, takže soubor se soukromým klíčem bude klice.pem. Soubor klice.pem klienta:
 
-----BEGIN RSA PRIVATE KEY----- 
Proc-Type: 4,ENCRYPTED 
DEK-Info: DES-EDE3-CBC,5B37D7CE9E969ACB 

bxGO3inw8ihXRcEa7m7eV+KvOd68VtcRsShqcUz/gEPvHS3mVI1m1I3Lm5R0pY2X 
XSgDAJA2g+kou0diDeKPCOeftBoyEuKcwULkjevlYiTulKnQGQodm5fcEmlJuJ6G 
tGKG4je/e7V/Z9/nISqZhx5DHO/cftO2bu/7MQEHd101t8nrDd30BUJm4wgrl9wV 
nGDAjE+JSEeHNVqllAfcgNEHj70VOPk+uee2RLa6utbpTQ5HAnKfZIZ8ySyk+ky7 
mTCK5tVX8vcyykmj7qGR0z770QWWr0N0JVIqbE9+LHyBJT0eFZFExD0MmgYO+Fu4 
O9TdiOi2Mg+KSHkhBef1Ez8GUOqWAMzoQE2gri1BFi5OqIn6beZxP7WaxMkspzoe 
j+FxNfuAPhwQpc/xApxQZHiyocAiMqAYwhtjyEo4Sv0= 
-----END RSA PRIVATE KEY-----

 

Žádost o certifikát vznikne v souboru req.txt, který dopravíme certifikační autoritě do adresáře req_in.

# Vytvoreni certifikatu klienta:
$ ssleay x509 -CAform DER -CAkeyform DER  -in req_in/req.txt  -out data/new_cert/out.txt  -CA private/CA1cert.der   -req -CAkey private/klice.pem -CAserial data/serial -text

V souboru data/new_cert/out.txt bude vytvořen podepsaný certifikát klienta:
 
Certificate: 
    Data: 
        Version: 1 (0x0) 
        Serial Number: 4 (0x4) 
        Signature Algorithm: md5WithRSAEncryption 
        Issuer: C=CZ, O=PVT,a.s., CN=CA/Email=dostalek@pvt.net 
        Validity 
            Not Before: Mar 25 07:59:10 1998 GMT 
            Not After : Apr 24 07:59:10 1998 GMT 
        Subject: C=CZ, ST=Cechy, L=Ceske Budejovice, O=PVT,a.s., OU=VCU, CN=Libor Dostalek/Email=dostalek@pvt.net 
        Subject Public Key Info: 
            Public Key Algorithm: rsaEncryption 
            RSA Public Key: (512 bit) 
                Modulus (512 bit): 
                    00:c3:f0:28:75:15:b7:29:e5:e5:a1:b6:7f:e2:d7: 
                    08:1e:ea:b2:1c:2a:3f:73:2d:d1:50:f5:63:4f:ad: 
                    29:e7:4a:e6:42:d8:e2:72:26:ba:38:d8:d6:1c:6e: 
                    0b:16:42:db:b1:67:0f:15:aa:8f:1c:55:a8:ac:3d: 
                    c0:b1:5a:7a:2f 
                Exponent: 65537 (0x10001) 
    Signature Algorithm: md5WithRSAEncryption 
        53:37:41:16:2f:15:f1:90:ea:86:9c:99:63:78:28:2a:7e:fe: 
        da:ec:a2:a9:71:d4:f3:ff:d2:c5:d2:35:55:d5:c4:ae:73:68: 
        97:c9:5b:c6:6a:92:34:95:73:fb:29:94:d9:8b:41:0a:34:8b: 
        b1:09:45:53:7a:0f:9f:c3:1c:44:6a:b8:b6:ca:34:42:67:84: 
        57:78:a3:6f:a2:86:02:05:9a:f1:8e:0f:43:c2:50:bb:6c:bb: 
        f4:06:f0:de:35:1b:16:ce:5c:d9:df:39:69:85:82:3e:83:a5: 
        be:c6:40:08:bf:25:9a:6d:13:d2:01:fd:5d:6b:ef:93:71:87: 
        ec:48 
-----BEGIN CERTIFICATE----- 
MIICDTCCAXYCAQQwDQYJKoZIhvcNAQEEBQAwTjELMAkGA1UEBhMCQ1oxETAPBgNV 
BAoTCFBWVCxhLnMuMQswCQYDVQQDEwJDQTEfMB0GCSqGSIb3DQEJARYQZG9zdGFs 
ZWtAcHZ0Lm5ldDAeFw05ODAzMjUwNzU5MTBaFw05ODA0MjQwNzU5MTBaMIGTMQsw 
CQYDVQQGEwJDWjEOMAwGA1UECBMFQ2VjaHkxGTAXBgNVBAcTEENlc2tlIEJ1ZGVq 
b3ZpY2UxETAPBgNVBAoTCFBWVCxhLnMuMQwwCgYDVQQLEwNWQ1UxFzAVBgNVBAMT 
DkxpYm9yIERvc3RhbGVrMR8wHQYJKoZIhvcNAQkBFhBkb3N0YWxla0BwdnQubmV0 
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMPwKHUVtynl5aG2f+LXCB7qshwqP3Mt 
0VD1Y0+tKedK5kLY4nImujjY1hxuCxZC27FnDxWqjxxVqKw9wLFaei8CAwEAATAN 
BgkqhkiG9w0BAQQFAAOBgQBTN0EWLxXxkOqGnJljeCgqfv7a7KKpcdTz/9LF0jVV 
1cSuc2iXyVvGapI0lXP7KZTZi0EKNIuxCUVTeg+fwxxEari2yjRCZ4RXeKNvooYC 
BZrxjg9DwlC7bLv0BvDeNRsWzlzZ3zlphYI+g6W+xkAIvyWabRPSAf1da++TcYfs 
SA== 
-----END CERTIFICATE-----
 


Výsledný test

Jenže klientem mé certifikační autoryty byl uživatel, který chce provozovat anonymní server s_server (z hlediska CA se jednalo o klienta, ale z hlediska TCP/IP je to server). Vydaný certifikát bude sloužit jako certifikát serveru. Server s_server i testovací klient s_client mají podobné parametry: Příklad komunikace:
 
klient server
$ ssleay s_server -accept 2345 -cert 04.pem -key klice.pem  -state  -ssl3 -WWW -debug
Enter PEM pass phrase: Příst.heslo 
ACCEPT
$ ssleay s_client -port 2345 -host 127.0.0.1   -state -CApath private -CAfile CA0.txt -ssl3
CONNECTED(00000003) 
SSL_connect:before SSL initalisation 
SSL_connect:SSLv3 write client hello A 
SSL_connect:SSLv3 read server hello A 
depth=2 /C=CZ/ST=Cechy/L=Ceske Budejovice/O=PVT,a.s./OU=VCU/CN=CA/Email=dostalek@pvt.net 
verify return:1 
depth=1 /C=CZ/O=PVT,a.s./CN=CA/Email=dostalek@pvt.net 
verify return:1 
depth=0 /C=CZ/ST=Cechy/L=Ceske Budejovice/O=PVT,a.s./OU=VCU/CN=Libor Dostalek/Email=dostalek@pvt.net 
verify return:1 
SSL_connect:SSLv3 read server certificate A 
SSL_connect:SSLv3 read server done A 
SSL_connect:SSLv3 write client key exchange A 
SSL_connect:SSLv3 write change cipher spec A 
SSL_connect:SSLv3 write finished A 
SSL_connect:SSLv3 flush data 
SSL_connect:SSLv3 read finished A 
--- 
Certficate chain 
 0 s:/C=CZ/ST=Cechy/L=Ceske Budejovice/O=PVT,a.s./OU=VCU/CN=Libor Dostalek/Email=dostalek@pvt.net 
   i:/C=CZ/O=PVT,a.s./CN=CA/Email=dostalek@pvt.net 
 1 s:/C=CZ/O=PVT,a.s./CN=CA/Email=dostalek@pvt.net 
   i:/C=CZ/ST=Cechy/L=Ceske Budejovice/O=PVT,a.s./OU=VCU/CN=CA/Email=dostalek@pvt.net 
--- 
Server certificate 
-----BEGIN CERTIFICATE----- 
MIICDTCCAXYCAQQwDQYJKoZIhvcNAQEEBQAwTjELMAkGA1UEBhMCQ1oxETAPBgNV 
BAoTCFBWVCxhLnMuMQswCQYDVQQDEwJDQTEfMB0GCSqGSIb3DQEJARYQZG9zdGFs 
ZWtAcHZ0Lm5ldDAeFw05ODAzMjUwNzU5MTBaFw05ODA0MjQwNzU5MTBaMIGTMQsw 
CQYDVQQGEwJDWjEOMAwGA1UECBMFQ2VjaHkxGTAXBgNVBAcTEENlc2tlIEJ1ZGVq 
b3ZpY2UxETAPBgNVBAoTCFBWVCxhLnMuMQwwCgYDVQQLEwNWQ1UxFzAVBgNVBAMT 
DkxpYm9yIERvc3RhbGVrMR8wHQYJKoZIhvcNAQkBFhBkb3N0YWxla0BwdnQubmV0 
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMPwKHUVtynl5aG2f+LXCB7qshwqP3Mt 
0VD1Y0+tKedK5kLY4nImujjY1hxuCxZC27FnDxWqjxxVqKw9wLFaei8CAwEAATAN 
BgkqhkiG9w0BAQQFAAOBgQBTN0EWLxXxkOqGnJljeCgqfv7a7KKpcdTz/9LF0jVV 
1cSuc2iXyVvGapI0lXP7KZTZi0EKNIuxCUVTeg+fwxxEari2yjRCZ4RXeKNvooYC 
BZrxjg9DwlC7bLv0BvDeNRsWzlzZ3zlphYI+g6W+xkAIvyWabRPSAf1da++TcYfs 
SA== 
-----END CERTIFICATE----- 
subject=/C=CZ/ST=Cechy/L=Ceske Budejovice/O=PVT,a.s./OU=VCU/CN=Libor Dostalek/Email=dostalek@pvt.net 
issuer=/C=CZ/O=PVT,a.s./CN=CA/Email=dostalek@pvt.net 
--- 
No client certificate CA names sent 
--- 
SSL handshake has read 1291 bytes and written 220 bytes 
--- 
New, SSLv3, Cipher is RC4-SHA 
SSL-Session: 
    Cipher    : RC4-SHA 
    Session-ID: 93675C6B3817EBEAC1387DFEDD3A78B81FF81DCBD07D79C8 66D39EEA7DE05482 
    Master-Key: 59D3802D3DEA37DA5A8E0FA3B7AE70363A9E426F7C695EA3 D45FC2927CBC21EF D40539D1C43B6ABD7AFA98337663340E 
    Key-Arg   : None 
    Start Time: 890818607 
    Timeout   : 7200 (sec) 
---
 
SSL3 alert read:warning:close notify 
closed 
SSL3 alert write:warning:close notify 
 
SSL3 alert write:warning:close notify 
 
ACCEPT

V předchozím výpisu si povšiměte, že server odeslal certifikát klientu, který jej nejprve verifikoval na certifikát CA, který verifikoval na nultý certifikát CA (podepsaný sám sebou). Hloubko vnoření certifikátů - délka řetězce certifkátů je tedy z pohledu  klienta 3.

Pro zajímavost jsem server spustil s parametrem -debug a výpis jednotlivých zpráv protokolu SSL uvádím v následující tabulce. Analýzu jsem neprováděl, ale pokud jste prostudovali kapitolu Zřízení nové relace pak si tento výstup můžete analyzovat jako domácí cvičení.
 
Enter PEM pass phrase: 
ACCEPT 
SSL_accept:before SSL initalisation 
read from 40040580 [14004AD80] (5 bytes => 5 (0x5)) 
0000 - 16 03 00 00 47                                    ....G 
read from 40040580 [14004AD85] (71 bytes => 71 (0x47)) 
0000 - 01 00 00 43 03 00 35 18-d2 98 00 00 00 00 62 d4   ...C..5.......b. 
0010 - 53 b6 7b 5a 67 1c 56 5a-6b aa 81 5f 16 75 78 28   S.{Zg.VZk.._.ux( 
0020 - 14 ee 67 8f de c5 00 00-1c 00 05 00 04 00 16 00   ..g............. 
0030 - 13 00 0a 00 07 00 15 00-12 00 09 00 14 00 11 00   ................ 
0040 - 08 00 06 00 03 01                                 ...... 
0047 - <SPACES/NULS> 
SSL_accept:SSLv3 read client hello A 
write to 40040580 [140054600] (79 bytes => 79 (0x4F)) 
0000 - 16 03 00 00 4a 02 00 00-46 03 00 35 18 d2 98 ec   ....J...F..5.... 
0010 - bc 6e ee f3 7d b4 08 67-d4 59 c0 36 06 ad 4f 44   .n..}..g.Y.6..OD 
0020 - e1 f8 2b 28 98 88 74 00-00 00 00 20 a6 d7 e4 b5   ..+(..t.... .... 
0030 - 66 40 02 7a 64 ae 47 6f-8c ae ed a3 23 23 1f 52   f@.zd.Go....##.R 
0040 - 5b 83 c0 b3 c1 3a 9a 4e-29 27 6f c5 00 05         [....:.N)'o... 
004f - <SPACES/NULS> 
SSL_accept:SSLv3 write server hello A 
write to 40040580 [140054600] (1132 bytes => 1132 (0x46C)) 
0000 - 16 03 00 04 67 0b 00 04-63 00 04 60 00 02 11 30   ....g...c..`...0 
0010 - 82 02 0d 30 82 01 76 02-01 04 30 0d 06 09 2a 86   ...0..v...0...*. 
0020 - 48 86 f7 0d 01 01 04 05-00 30 4e 31 0b 30 09 06   H........0N1.0.. 
0030 - 03 55 04 06 13 02 43 5a-31 11 30 0f 06 03 55 04   .U....CZ1.0...U. 
0040 - 0a 13 08 50 56 54 2c 61-2e 73 2e 31 0b 30 09 06   ...PVT,a.s.1.0.. 
0050 - 03 55 04 03 13 02 43 41-31 1f 30 1d 06 09 2a 86   .U....CA1.0...*. 
0060 - 48 86 f7 0d 01 09 01 16-10 64 6f 73 74 61 6c 65   H........dostale 
0070 - 6b 40 70 76 74 2e 6e 65-74 30 1e 17 0d 39 38 30   k@pvt.net0...980 
0080 - 33 32 35 30 37 35 39 31-30 5a 17 0d 39 38 30 34   325075910Z..9804 
0090 - 32 34 30 37 35 39 31 30-5a 30 81 93 31 0b 30 09   24075910Z0..1.0. 
00a0 - 06 03 55 04 06 13 02 43-5a 31 0e 30 0c 06 03 55   ..U....CZ1.0...U 
00b0 - 04 08 13 05 43 65 63 68-79 31 19 30 17 06 03 55   ....Cechy1.0...U 
00c0 - 04 07 13 10 43 65 73 6b-65 20 42 75 64 65 6a 6f   ....Ceske Budejo 
00d0 - 76 69 63 65 31 11 30 0f-06 03 55 04 0a 13 08 50   vice1.0...U....P 
00e0 - 56 54 2c 61 2e 73 2e 31-0c 30 0a 06 03 55 04 0b   VT,a.s.1.0...U.. 
00f0 - 13 03 56 43 55 31 17 30-15 06 03 55 04 03 13 0e   ..VCU1.0...U.... 
0100 - 4c 69 62 6f 72 20 44 6f-73 74 61 6c 65 6b 31 1f   Libor Dostalek1. 
0110 - 30 1d 06 09 2a 86 48 86-f7 0d 01 09 01 16 10 64   0...*.H........d 
0120 - 6f 73 74 61 6c 65 6b 40-70 76 74 2e 6e 65 74 30   ostalek@pvt.net0 
0130 - 5c 30 0d 06 09 2a 86 48-86 f7 0d 01 01 01 05 00   \0...*.H........ 
0140 - 03 4b 00 30 48 02 41 00-c3 f0 28 75 15 b7 29 e5   .K.0H.A...(u..). 
0150 - e5 a1 b6 7f e2 d7 08 1e-ea b2 1c 2a 3f 73 2d d1   ...........*?s-. 
0160 - 50 f5 63 4f ad 29 e7 4a-e6 42 d8 e2 72 26 ba 38   P.cO.).J.B..r&.8 
0170 - d8 d6 1c 6e 0b 16 42 db-b1 67 0f 15 aa 8f 1c 55   ...n..B..g.....U 
0180 - a8 ac 3d c0 b1 5a 7a 2f-02 03 01 00 01 30 0d 06   ..=..Zz/.....0.. 
0190 - 09 2a 86 48 86 f7 0d 01-01 04 05 00 03 81 81 00   .*.H............ 
01a0 - 53 37 41 16 2f 15 f1 90-ea 86 9c 99 63 78 28 2a   S7A./.......cx(* 
01b0 - 7e fe da ec a2 a9 71 d4-f3 ff d2 c5 d2 35 55 d5   ~.....q......5U. 
01c0 - c4 ae 73 68 97 c9 5b c6-6a 92 34 95 73 fb 29 94   ..sh..[.j.4.s.). 
01d0 - d9 8b 41 0a 34 8b b1 09-45 53 7a 0f 9f c3 1c 44   ..A.4...ESz....D 
01e0 - 6a b8 b6 ca 34 42 67 84-57 78 a3 6f a2 86 02 05   j...4Bg.Wx.o.... 
01f0 - 9a f1 8e 0f 43 c2 50 bb-6c bb f4 06 f0 de 35 1b   ....C.P.l.....5. 
0200 - 16 ce 5c d9 df 39 69 85-82 3e 83 a5 be c6 40 08   ..\..9i..>....@. 
0210 - bf 25 9a 6d 13 d2 01 fd-5d 6b ef 93 71 87 ec 48   .%.m....]k..q..H 
0220 - 00 02 49 30 82 02 45 30-82 01 ae 02 01 01 30 0d   ..I0..E0......0. 
0230 - 06 09 2a 86 48 86 f7 0d-01 01 04 05 00 30 81 87   ..*.H........0.. 
0240 - 31 0b 30 09 06 03 55 04-06 13 02 43 5a 31 0e 30   1.0...U....CZ1.0 
0250 - 0c 06 03 55 04 08 13 05-43 65 63 68 79 31 19 30   ...U....Cechy1.0 
0260 - 17 06 03 55 04 07 13 10-43 65 73 6b 65 20 42 75   ...U....Ceske Bu 
0270 - 64 65 6a 6f 76 69 63 65-31 11 30 0f 06 03 55 04   dejovice1.0...U. 
0280 - 0a 13 08 50 56 54 2c 61-2e 73 2e 31 0c 30 0a 06   ...PVT,a.s.1.0.. 
0290 - 03 55 04 0b 13 03 56 43-55 31 0b 30 09 06 03 55   .U....VCU1.0...U 
02a0 - 04 03 13 02 43 41 31 1f-30 1d 06 09 2a 86 48 86   ....CA1.0...*.H. 
02b0 - f7 0d 01 09 01 16 10 64-6f 73 74 61 6c 65 6b 40   .......dostalek@ 
02c0 - 70 76 74 2e 6e 65 74 30-1e 17 0d 39 38 30 33 31   pvt.net0...98031 
02d0 - 34 31 31 30 34 34 34 5a-17 0d 39 39 30 33 31 34   4110444Z..990314 
02e0 - 31 31 30 34 34 34 5a 30-4e 31 0b 30 09 06 03 55   110444Z0N1.0...U 
02f0 - 04 06 13 02 43 5a 31 11-30 0f 06 03 55 04 0a 13   ....CZ1.0...U... 
0300 - 08 50 56 54 2c 61 2e 73-2e 31 0b 30 09 06 03 55   .PVT,a.s.1.0...U 
0310 - 04 03 13 02 43 41 31 1f-30 1d 06 09 2a 86 48 86   ....CA1.0...*.H. 
0320 - f7 0d 01 09 01 16 10 64-6f 73 74 61 6c 65 6b 40   .......dostalek@ 
0330 - 70 76 74 2e 6e 65 74 30-81 9f 30 0d 06 09 2a 86   pvt.net0..0...*. 
0340 - 48 86 f7 0d 01 01 01 05-00 03 81 8d 00 30 81 89   H............0.. 
0350 - 02 81 81 00 d6 bd 0f e6-14 1a 8c 86 e1 dc 08 51   ...............Q 
0360 - 08 72 c0 67 74 55 c0 13-db 42 b7 88 b4 20 4c 52   .r.gtU...B... LR 
0370 - 4f e5 25 1d ed e8 c4 b7-ac 40 df 45 ce 97 a6 66   O.%......@.E...f 
0380 - b2 c2 58 31 d5 9b 37 4e-52 ea a9 5c b8 ff b5 71   ..X1..7NR..\...q 
0390 - c6 95 67 81 81 71 32 27-4f b0 f7 f9 6c 6a 9c d1   ..g..q2'O...lj.. 
03a0 - 92 7c 20 a6 f1 f3 1d 65-7d cf 3d 1b 10 24 80 fe   .| ....e}.=..$.. 
03b0 - e0 25 c7 fb 27 51 2d 5a-36 4e 2b 37 77 33 dd b2   .%..'Q-Z6N+7w3.. 
03c0 - 93 2b f3 ea cd 36 ba f1-9e dc 52 f6 ef d2 a6 36   .+...6....R....6 
03d0 - 59 da a6 31 02 03 01 00-01 30 0d 06 09 2a 86 48   Y..1.....0...*.H 
03e0 - 86 f7 0d 01 01 04 05 00-03 81 81 00 aa ba 0d d6   ................ 
03f0 - 90 ed f5 fb 78 54 51 6c-d7 5c 82 ba 0a 2e 61 c7   ....xTQl.\....a. 
0400 - ca 81 70 f0 a0 75 58 77-26 42 5d 14 43 39 af d8   ..p..uXw&B].C9.. 
0410 - 07 fd 95 b8 36 01 fa 45-f6 f4 2b 3e f2 76 98 ec   ....6..E..+>.v.. 
0420 - 61 6d 15 dc 19 b0 a7 ba-3c ff 0b bc 8f f8 c7 61   am......<......a 
0430 - 04 cd 27 33 78 ea a2 ce-21 f9 f1 84 d6 38 35 ee   ..'3x...!....85. 
0440 - 19 23 d8 f6 c5 c5 ce 87-5c 86 c5 a3 4e 3a d2 66   .#......\...N:.f 
0450 - f8 fb 63 72 fa cb 85 f0-eb 44 ce 53 bb c6 d8 61   ..cr.....D.S...a 
0460 - 2f fd 2d a0 f8 dc 87 09-cf 74 48 d4               /.-......tH. 
SSL_accept:SSLv3 write certificate A 
write to 40040580 [140054600] (9 bytes => 9 (0x9)) 
0000 - 16 03 00 00 04 0e                                 ...... 
0009 - <SPACES/NULS> 
SSL_accept:SSLv3 write server done A 
SSL_accept:SSLv3 flush data 
read from 40040580 [14004AD80] (5 bytes => 5 (0x5)) 
0000 - 16 03 00 00 44                                    ....D 
read from 40040580 [14004AD85] (68 bytes => 68 (0x44)) 
0000 - 10 00 00 40 24 96 0e b3-cb 16 73 eb c8 a2 53 69   ...@$.....s...Si 
0010 - 50 3b 21 eb 1e 1d 50 6e-00 42 d9 3f 8f 9c 6e 5d   P;!...Pn.B.?..n] 
0020 - 2c 99 10 8d 19 61 32 74-94 f2 10 17 b9 1e 21 11   ,....a2t......!. 
0030 - f4 0d bd 5d b7 c8 46 4f-f5 9e a7 b2 6d 6b 89 34   ...]..FO....mk.4 
0040 - 86 be 25 ad                                       ..%. 
SSL_accept:SSLv3 read client key exchange A 
read from 40040580 [14004AD80] (5 bytes => 5 (0x5)) 
0000 - 14 03 00 00 01                                    ..... 
read from 40040580 [14004AD85] (1 bytes => 1 (0x1)) 
0000 - 01                                                . 
read from 40040580 [14004AD80] (5 bytes => 5 (0x5)) 
0000 - 16 03 00 00 3c                                    ....< 
read from 40040580 [14004AD85] (60 bytes => 60 (0x3C)) 
0000 - 4a 9c 14 f5 7d 9a bc 54-5f f9 57 0a d8 cf db 00   J...}..T_.W..... 
0010 - 38 76 a2 09 77 d2 c9 92-76 8e ed 53 d2 f1 0a c2   8v..w...v..S.... 
0020 - ec 3d ac c5 54 d9 8e d2-f4 bb 20 4f 66 b5 9e f2   .=..T..... Of... 
0030 - 54 2f 9f a4 84 be 60 f9-72 10 78 8a               T/....`.r.x. 
SSL_accept:SSLv3 read finished A 
write to 40040580 [140054600] (6 bytes => 6 (0x6)) 
0000 - 14 03 00 00 01 01                                 ...... 
SSL_accept:SSLv3 write change cipher spec A 
write to 40040580 [140054600] (65 bytes => 65 (0x41)) 
0000 - 16 03 00 00 3c 32 bc c3-bc 04 c7 eb b2 41 ed e3   ....<2.......A.. 
0010 - 88 6c be f0 b0 7e d8 ac-eb 45 14 2c d9 28 2a c6   .l...~...E.,.(*. 
0020 - 11 5c 0a 83 f2 e1 7f 57-f3 ba 98 12 eb 8b 53 6d   .\.....W......Sm 
0030 - 53 af 9d 47 ae 33 bf 13-af a9 82 ac ae 81 4c aa   S..G.3........L. 
0040 - 1d                                                . 
SSL_accept:SSLv3 write finished A 
SSL_accept:SSLv3 flush data 
read from 40040580 [14004AD80] (5 bytes => 5 (0x5)) 
0000 - 17 03 00 00 15                                    ..... 
read from 40040580 [14004AD85] (21 bytes => 21 (0x15)) 
0000 - df dd e0 b7 7f 47 d9 34-a2 97 bb af 6b 84 16 63   .....G.4....k..c 
0010 - 81 93 23 c5 7e                                    ..#.~ 
write to 40040580 [14004F5A0] (27 bytes => 27 (0x1B)) 
0000 - 15 03 00 00 16 99 08 6f-b1 74 66 66 54 11 c6 57   .......o.tffT..W 
0010 - 41 6f 41 8f 83 87 84 db-3b 0f 4a                  AoA.....;.J 
SSL3 alert write:warning:close notify 
ACCEPT 
read from 40040580 [14004AD80] (5 bytes => 5 (0x5)) 
0000 - 15 03 00 00 16                                    ..... 
read from 40040580 [14004AD85] (22 bytes => 22 (0x16)) 
0000 - df 66 0f 01 23 8e 8b 08-b1 76 87 37 7b f4 4e c5   .f..#....v.7{.N. 
0010 - 9c ca d5 30 64 fe                                 ...0d. 
SSL3 alert read:warning:close notify 
 
 
:-))