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