Praktické příklady pro práci s OpenSSL

V Linuxu je standardem pro práci s certifikáty OpenSSL .

OpenSSL je open source implementací SSL and TLS protokolů. Základní knihovna (napsaná v programovacím jazyce C) provádí základní šifrovací funkce a nabízí různé pomocné funkce.

Základní využití OpenSSL spočívá ve vytvoření vlastní certifikační autority (CA), se kterou lze generovat certifikáty. Tato problematika je popsána na mnoha místech. Zde se budu zabývat jednoduššími možnostmi využití.

Připojení na službu HTTPS

Někdy je užitečné použít ekvivalent příkazu „telnet server 80“ na weby s HTTPS:

openssl s_client -connect localhost:443 -state -debug

GET / HTTP/1.0

Výsledkem je dlouhý výstup, který je vhodný pro testování a ladění šifrovaného HTTP.

Generování náhodných čísel nebo řetězců

Pro generování náhodných řetězců lze použít openssl rand.

Pro generování náhodných čísel poslouží například:

# echo $(openssl rand 4 | od -DAn)
20536180

Pro generování řetězců base64 (například hesel) stačí použít:

# openssl rand -base64 6
udZIWGVV

Ověření certifikátu z příkazové řádky

Někdy je lepší místo vyspělého klienta ověřit platnost certifikátu z příkazové řádky:

# openssl s_client -connect www.seznam.cz:443
CONNECTED(00000003)
depth=3 /C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting cc/OU=Certification Services Division/CN=Thawte Premium Server CA/[email protected]
verify return:1
depth=2 /C=US/O=thawte, Inc./OU=Certification Services Division/OU=(c) 2006 thawte, Inc. - For authorized use only/CN=thawte Primary Root CA
verify return:1
depth=1 /C=US/O=Thawte, Inc./CN=Thawte SSL CA
verify return:1
depth=0 /C=CZ/ST=Prague Region/L=Prague/O=Seznam.cz, a.s./OU=QA/CN=www.seznam.cz
verify return:1
---
Certificate chain
 0 s:/C=CZ/ST=Prague Region/L=Prague/O=Seznam.cz, a.s./OU=QA/CN=www.seznam.cz
   i:/C=US/O=Thawte, Inc./CN=Thawte SSL CA
...

Získání informací z certifikátu

SSL certifikát obsahuje mnoho informací. Parametr x509 je cestou k získání těchto údajů.

Předpokládejme, že cerfifikát, kterů chceme zkoumat, je uložen v souboru server.crt.

Parametr -text dává plnou informaci o certifikátu

# openssl x509 -text -in server.crt

Můžete získat i konkrétní informaci pomocí příslušného přepínače:

# openssl x509 -noout -in server.crt -issuer

# openssl x509 -noout -in server.crt -subject

# openssl x509 -noout -in server.crt -dates

# openssl x509 -noout -in server.crt -issuer -subject -dates

# openssl x509 -noout -in server.crt -hash

# openssl x509 -noout -in server.crt -fingerprint

Generování  MD5 hashe

Openssl může být použito ke generování MD5 z textu a nebo souboru:

# cat soubor | openssl md5

nebo

# echo -n "nejaky libovolny text" |openssl md5

Benchmarking s OpenSSL

Openssl obsahuje funkce, pomocí kterých lze měřit výkonnost systému:

# openssl speed

Výstup může vypadat například takto:

Doing md2 for 3s on 16 size blocks: 408472 md2's in 3.00s
Doing md2 for 3s on 64 size blocks: 210636 md2's in 3.00s
Doing md2 for 3s on 256 size blocks: 71917 md2's in 3.00s
Doing md2 for 3s on 1024 size blocks: 19451 md2's in 3.00s
Doing md2 for 3s on 8192 size blocks: 2529 md2's in 3.00s
Doing md4 for 3s on 16 size blocks: 7716599 md4's in 3.00s
Doing md4 for 3s on 64 size blocks: 6265801 md4's in 3.00s
Doing md4 for 3s on 256 size blocks: 4125859 md4's in 3.00s
...

Benchmark vzdáleného spojení

Parametrem s_time je možné testovat kvalitu spojení:

# openssl s_time -connect google.com:443

Parametr s_time může mít různé přepínače:

# openssl s_time -connect remote.host:443 -www /index.html -new

# openssl s_time \
  -connect remote.host:443 -www /index.html -new \
  -ssl3 -cipher HIGH

#
IFS=":"
for c in $(openssl ciphers -ssl3 RSA); do
  echo $c
  openssl s_time -connect remote.host:443 \
    -www / -new -time 10 -cipher $c 2>&1 | \
    grep bytes
  echo
done

Diskuze

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Přejít nahoru