$ 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í:
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 |
$ 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 # ####################################################################
####################################################################
dir
= ./data
# Pracovni adresar se jmenuje data
#pro podpis certifikatu c.1 je treba nasl.radek !!!!!!!!
# x509_extensions = x509v3_extensions
# Pouzita rozsireni X.509 v 3
# Dale nasleduji pravidla zadavani jednotlivych rozlisitelnych jmen:
# Pravidla pro CA:
# Pravidla pro ostatni subjekty:
####################################################################
[ req_distinguished_name ]
stateOrProvinceName
= State or Province Name (full name)
localityName
= Mesto
organizationName
= Nazev organizace
organizationalUnitName
= Nazev organizacni jednotky
commonName
= Jmeno
emailAddress
= E-mailova adresa
telefon
= Telefon
[ req_attributes ]
unstructuredName = An optional company name [ x509v3_extensions ] nsCaRevocationUrl
= http://info.pvt.net
nsCertType
= yes
|
Teprve poté se karta obratila a pohnul jsem se mírně kupředu.
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
|
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:
# 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:
-----BEGIN CERTIFICATE-----
|
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í:
Nyní můžeme přejít k vydávání certifikátů pro uživatele (zákazníky naší
testovací CA)
$ 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
|
Žá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----- |
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 |