NFsec Logo

OpenSSL w linii poleceń

14/06/2012 w Bezpieczeństwo Brak komentarzy.  (artykuł nr 356, ilość słów: 812)

A

plikcja openssl, która jest dostarczana z biblioteką OpenSSL umożliwia wykorzystanie szerokiego wachlarzu kryptograficznych operacji. Staje się ona szczególnie przydatna w przypadku wykonywania pojedynczych zadań związanych z protokołem SSL. Program ten posiada bardzo obszerną dokumentację – dlatego poniżej postaram się przedstawić kilka praktycznych opcji i zastosowań tego programu. Zakładam, że w systemie jest już zainstalowany binarny pakiet tego oprogramowania i znajduje się w poprawnej ścieżce systemowej ($PATH).

1. Sprawdzenie wersji OpenSSL:

openssl version

2. Lista dostępnych opcji i parametrów:

openssl help

3. Lista dostępnych parametrów dla sub-poleceń:

openssl dgst -h

4. Lista dostępnych szyfrów kryptograficznych:

openssl ciphers -v

5. Lista dostępnych szyfrów kryptograficznych TLSv1:

openssl ciphers -v -tls1

6. Lista dostępnych szyfrów obsługujących klucze większe niż 128-bitów:

openssl ciphers -v 'HIGH'

7. Lista dostępnych szyfrów obsługujących algorytm AES:

openssl ciphers -v 'AES+HIGH'

8. Benchmark systemu:

openssl speed

9. Benchmark wybranego algorytmu:

openssl speed rsa

10. Benchmark z wykorzystaniem wszystkich rdzeni systemu:

openssl speed rsa -multi 2

11. Benchmark zdalnego połączenia SSL:

openssl s_time -connect zdalny.host:443

12. Benchmark zdalnego połączenia SSL – dla nowych sesji:

openssl s_time -connect zdalny.host:443 -www /bezpieczne_logowanie.html -new

13. Benchmark zdalnego połączenia SSL – dla nowych sesji przez SSLv3:

openssl s_time -connect zdalny.host:443 -www /bezpieczne_logowanie.html -new -ssl3 \
-cipher HIGH

14. Emulacja serwera WWW z SSL plus jego przetestowanie z drugiego hosta:

openssl s_server -cert darkstar.pem -www
openssl s_time -connect darkstar.net:4433 -www / -new -ssl3

15. Ściągnięcie zdalnego certyfikatu za pomocą skryptu:

#!/bin/bash
# uzycie: cert.sh [zdalny_host] [port]
REMHOST=$1
REMPORT=${2:-443}
echo |\
openssl s_client -connect ${REMHOST}:${REMPORT} 2>&1 |\
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'

16. Uzyskanie informacji o certyfikacie:

openssl x509 -text -in darkstar.pem
openssl x509 -noout -in darkstar.pem -issuer
openssl x509 -noout -in darkstar.pem -subject
openssl x509 -noout -in darkstar.pem -dates
openssl x509 -noout -in darkstar.pem -issuer -subject -dates
openssl x509 -noout -in darkstar.pem -hash
openssl x509 -noout -in darkstar.pem -fingerprint

17. Weryfikacja certyfikatu:

openssl verify darkstar.pem

18. Testowanie serwera SMTP z TLS/SSL:

openssl s_client -connect darkstar.net:25 -starttls smtp
openssl s_client -connect darkstar.net:465

19. Wykonanie funkcji skrótu MD5 na pliku:

openssl dgst -md5 plik.tar.gz

20. Wykonanie funkcji skrótu SHA1 na pliku:

openssl dgst -sha1 plik.tar.gz

21. Podpisanie swoim kluczem prywatnym pliku:

openssl dgst -sha1 -sign darkstar_prv.pem -out plik.tar.gz.sha1 plik.tar.gz

22. Weryfikacja podpisanego pliku kluczem publicznym:

openssl dgst -sha1 -verify darkstar_pub.pem -signature plik.tar.gz.sha1 plik.tar.gz

23. Zakodowanie pliku base64:

openssl enc -base64 -in plik.txt

24. Rozkodowanie pliku zakodowanego base64:

openssl enc -base64 -in plik.txt -out rozkodowany.txt

25. Zakodowanie ciągu znaków base64:

echo -n "Zakoduj mnie" | openssl enc -base64

26. Rozkodowanie ciągu znaków zakodowanego base64:

echo "WmFrb2R1aiBtbmllXCEK" | openssl enc -base64 -d

27. Wygenerowanie klucza RSA (standardowo 512-bitów):

 
openssl genrsa

28. Wygenerowanie klucza RSA – 1024-bitów:

 
openssl genrsa -out klucz.pem 1024

29. Wygenerowanie klucza RSA – 1024-bitów z hasłem:

 
openssl genrsa -des3 -out klucz.pem 1024

30. Usunięcie hasła z klucza RSA:

 
openssl rsa -in klucz.pem -out nowy_klucz.pem

31. Usunięcie hasła z klucza zawartym w pliku z certyfikatem:

 
openssl rsa -in certyfikat.pem -out nowy_certyfikat.pem
openssl x509 -in certyfikat.pem >> nowy_certyfikat.pem

32. Wygenerowanie klucza DSA – 1024-bitów:

 
openssl dsaparam -noout -out klucz.pem -genkey 1024

33. Wygenerowanie kilku kluczy DSA na podstawie wspólnych parametrów:

 
openssl dsaparam -out parametry_dsa.pem 1024
openssl gendsa -out klucz1.pem parametry_dsa.pem
openssl gendsa -out klucz2.pem parametry_dsa.pem

34. Wygenerowanie klucza krzywych eliptycznych:

 
openssl ecparam -out klucz.pem -name prime256v1 -genkey

35. Wygenerowanie listy dostępnych krzywych:

 
openssl ecparam -list_curves

36. Wygenerowanie hash’a hasła za pomocą funkcji crypt:

 
openssl passwd Tajne.Haslo

37. Wygenerowanie hash’a hasła za pomocą funkcji crypt z ciągiem zaburzającym:

 
openssl passwd -salt Tajny.Ciag Tajne.Haslo

38. Wygenerowanie hash’a hasła za pomocą skrótu MD5:

 
openssl passwd -1 Tajne.Haslo

39. Wygenerowanie hash’a hasła za pomocą skrótu MD5 z ciągiem zaburzającym:

 
openssl passwd -1 -salt xH5.ddjE Tajne.Haslo

40. Testowanie liczb pierwszych:

 
openssl prime 20988936657440586486151264256610222593863921

41. Wygenerowanie kilku liczb pierwszych:

#!/bin/bash
OD=10000
DO=10100
for N in $(seq $OD $DO); do
   openssl prime $N | awk '/is prime/ {print "ibase=16;"$1}' | bc
done

42. Generowanie losowych danych zakodowanych base64:

openssl rand -base64 128

43. Generowanie losowych danych i ich zapis w pliku:

openssl rand -out random.bin 1024

44. Generowanie losowych danych “siejąc” openssl układem plików cache przeglądarki Firefox:

cd $(find ~/.mozilla/firefox -type d -name Cache)
openssl rand -rand $(find . -type f -printf '%f:') -base64 1024

45. Generowanie losowych danych “siejąc” openssl pseudolosowym urządzeniem urandom:

head -c 32 /dev/urandom | openssl enc -base64

46. Szyfrowanie wiadomości e-mail publicznym certyfikatem odbiorcy:

openssl smime jej_certyfikat.pem \
-encrypt -des3 -in wiadomosc.txt \
-from 'NFsec <ja@mojadres.com>' \
-to 'Ona' <ona@jejadres.com>' \
-subject 'Moja zaszyfrowana wiadomosc Twoim certyfikatem'

47. Podpisanie wiadomości e-mail własnym certyfikatem:

openssl smime -sign -signer moj_certyfikat.pem -in wiadomosc.txt \
-from 'NFsec <ja@mojadres.com>' \
-to 'Ona' <ona@jejadres.com>' \
-subject 'Moja podpisana wiadomosc'

00. Interpretacja kodów błędów powiązanych z OpenSSL?

openssl errstr [kod błędu]

Więcej informacji: OpenSSL Command-Line HOWTO, man openssl

Kategorie K a t e g o r i e : Bezpieczeństwo

Tagi T a g i : , , , ,

Komentowanie tego wpisu jest zablokowane.