21 przykładów OpenSSL, które pomogą Ci w prawdziwym świecie

Opanuj tworzenie, zarządzanie i konwersję certyfikatów SSL z OpenSSL

OpenSSL to jedno z najczęściej wykorzystywanych narzędzi do generowania, modyfikacji i administracji certyfikatami SSL.

Napotkasz liczne sytuacje, w których praca z OpenSSL będzie niezbędna. Poniżej znajdziesz przydatną listę komend, która usprawni Twoją pracę.

W tym artykule przedstawimy najczęściej stosowane polecenia OpenSSL, które znajdą zastosowanie w praktyce.

Najważniejsze akronimy związane z certyfikatami:

  • SSL – Secure Sockets Layer (Warstwa Bezpiecznych Gniazd)
  • CSR – Certificate Signing Request (Żądanie Podpisania Certyfikatu)
  • TLS – Transport Layer Security (Bezpieczeństwo Warstwy Transportowej)
  • PEM – Privacy Enhanced Mail (Poczta o Podwyższonej Prywatności)
  • DER – Distinguished Encoding Rules (Wyróżnione Reguły Kodowania)
  • SHA – Secure Hash Algorithm (Bezpieczny Algorytm Haszujący)
  • PKCS – Public Key Cryptography Standards (Standardy Kryptografii Klucza Publicznego)

Uwaga: Jeśli nie jesteś zaznajomiony z tymi pojęciami, pomocny może okazać się kurs poświęcony obsłudze SSL/TLS.

Generowanie nowego żądania podpisania certyfikatu (CSR) oraz klucza prywatnego

openssl req -out newsblog.pl.csr -newkey rsa:2048 -nodes -keyout newsblog.pl.key

Powyższa komenda wygeneruje plik CSR oraz 2048-bitowy klucz RSA. W celu użycia certyfikatu na serwerach Apache lub Nginx, konieczne jest przesłanie pliku CSR do centrum certyfikacji. W odpowiedzi otrzymasz podpisany certyfikat, najczęściej w formacie DER lub PEM, który trzeba będzie skonfigurować na serwerze.

Tworzenie certyfikatu z podpisem własnym

openssl req -x509 -sha256 -nodes -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem

Ta komenda generuje samopodpisany certyfikat oraz plik klucza z 2048-bitowym RSA. Zastosowano również SHA256, uznawane za najbezpieczniejsze w obecnych czasach.

Wskazówka: Domyślnie certyfikat samopodpisany jest ważny tylko przez miesiąc. Możesz użyć parametru `-days`, aby przedłużyć jego ważność.

Przykład: Utworzenie certyfikatu samopodpisanego ważnego przez dwa lata:

openssl req -x509 -sha256 -nodes -days 730 -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem

Weryfikacja pliku CSR

openssl req -noout -text -in newsblog.pl.csr

Sprawdzenie CSR jest istotne, aby mieć pewność, że wysyłasz do organu certyfikującego plik z poprawnymi i kompletnymi danymi.

Tworzenie klucza prywatnego RSA

openssl genrsa -out private.key 2048

Jeśli potrzebujesz tylko wygenerować klucz prywatny RSA, możesz wykorzystać powyższą komendę. W celu uzyskania silniejszego szyfrowania użyto 2048 bitów.

Usuwanie hasła z klucza

openssl rsa -in certkey.key -out nopassphrase.key

Jeśli Twój klucz jest chroniony hasłem, serwer Apache będzie wymagał jego wprowadzenia przy każdym uruchomieniu. Aby uniknąć ciągłego wpisywania hasła, użyj podanej komendy, aby je usunąć.

Weryfikacja klucza prywatnego

openssl rsa -in certkey.key –check

W przypadku wątpliwości co do poprawności klucza, możesz użyć powyższej komendy, aby go zweryfikować.

Sprawdzanie pliku certyfikatu

openssl x509 -in certfile.pem -text –noout

Jeśli chcesz zweryfikować szczegóły certyfikatu, takie jak CN (Common Name) czy OU (Organizational Unit), użyj tego polecenia. Wyświetli ono szczegółowe informacje.

Sprawdzanie organu podpisującego certyfikat

openssl x509 -in certfile.pem -noout -issuer -issuer_hash

Każdy certyfikat jest podpisywany przez organ wydający. Powyższa komenda pozwala na jego sprawdzenie.

Sprawdzanie wartości skrótu certyfikatu

openssl x509 -noout -hash -in bestflare.pem

Konwersja formatu DER na PEM

openssl x509 –inform der –in sslcert.der –out sslcert.pem

Często centra certyfikacji przesyłają certyfikaty w formacie .der. Jeśli potrzebujesz użyć go w formacie .pem, koniecznym dla Apache, skorzystaj z tej komendy.

Konwersja formatu PEM na DER

openssl x509 –outform der –in sslcert.pem –out sslcert.der

Użyj tej komendy, aby dokonać konwersji formatu .pem na .der.

Konwersja certyfikatu i klucza prywatnego na format PKCS#12

openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem

Jeśli potrzebujesz użyć certyfikatu w aplikacji Java lub innej, która akceptuje tylko format PKCS#12, ta komenda wygeneruje pojedynczy plik .pfx zawierający certyfikat i klucz.

Wskazówka: Możesz również dołączyć certyfikat łańcucha, wykorzystując parametr `–chain`:

openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem -chain cacert.pem

Tworzenie CSR przy użyciu istniejącego klucza prywatnego

openssl req –out certificate.csr –key existing.key –new

Jeśli nie chcesz tworzyć nowego klucza, możesz użyć tej komendy, by wygenerować CSR wykorzystując istniejący klucz.

Sprawdzanie zawartości certyfikatu w formacie PKCS12

openssl pkcs12 –info –nodes –in cert.p12

PKCS12 to format binarny, którego nie da się łatwo przeglądać w edytorze tekstu. Ta komenda wyświetli zawartość pliku PKCS12.

Konwersja formatu PKCS12 na certyfikat PEM

openssl pkcs12 –in cert.p12 –out cert.pem

Jeśli chcesz użyć pliku pkcs12 w Apache, lub po prostu potrzebujesz certyfikat w formacie .pem, to ta komenda będzie użyteczna.

Testowanie certyfikatu SSL dla określonego adresu URL

openssl s_client -connect yoururl.com:443 –showcerts

Często korzystam z tej komendy do weryfikacji certyfikatu SSL określonego adresu URL. Jest ona bardzo przydatna do sprawdzania protokołu, szyfru oraz szczegółów certyfikatu.

Sprawdzanie wersji OpenSSL

openssl version

Jeśli odpowiadasz za bezpieczeństwo OpenSSL, jedną z pierwszych rzeczy, które powinieneś zrobić, to sprawdzić jego wersję.

Sprawdzanie daty wygaśnięcia certyfikatu w pliku PEM

openssl x509 -noout -in certificate.pem -dates

Przydatne do monitorowania ważności certyfikatu. Wyświetli daty `notBefore` i `notAfter`. Należy sprawdzić `notAfter`, aby potwierdzić czy certyfikat jest nadal ważny.

Przykład:

[[email protected] opt]# openssl x509 -noout -in bestflare.pem -dates
notBefore=Jul 4 14:02:45 2015 GMT
notAfter=Aug 4 09:46:42 2015 GMT
[[email protected] opt]#

Sprawdzanie daty wygaśnięcia certyfikatu SSL dla adresu URL

openssl s_client -connect secureurl.com:443 2>/dev/null | openssl x509 -noout –enddate

Kolejna przydatna komenda do zdalnego monitorowania daty ważności certyfikatu SSL dla określonego adresu URL.

Przykład:

[[email protected] opt]# openssl s_client -connect google.com:443 2>/dev/null | openssl x509 -noout -enddate

notAfter=Dec 8 00:00:00 2015 GMT

Sprawdzanie, czy adres URL akceptuje protokół SSL V2 lub V3

Sprawdzenie protokołu SSL V2:

openssl s_client -connect secureurl.com:443 -ssl2

Sprawdzenie protokołu SSL V3:

openssl s_client -connect secureurl.com:443 –ssl3

Sprawdzenie protokołu TLS 1.0:

openssl s_client -connect secureurl.com:443 –tls1

Sprawdzenie protokołu TLS 1.1:

openssl s_client -connect secureurl.com:443 –tls1_1

Sprawdzenie protokołu TLS 1.2:

openssl s_client -connect secureurl.com:443 –tls1_2

Jeśli zabezpieczasz serwer WWW i chcesz sprawdzić, czy protokół SSL V2/V3 jest włączony, użyj powyższych poleceń. Jeśli protokół jest aktywny, otrzymasz komunikat „POŁĄCZONO”, w przeciwnym razie „niepowodzenie uzgadniania”.

Sprawdzanie, czy dany szyfr jest akceptowany na adresie URL

openssl s_client -cipher 'ECDHE-ECDSA-AES256-SHA' -connect secureurl:443

Jeśli pracujesz nad ustawieniami bezpieczeństwa i wyniki testów penetracyjnych wskazują na akceptację słabych szyfrów, ta komenda pozwoli Ci to zweryfikować.

Oczywiście, musisz zmienić szyfr oraz adres URL, z którym chcesz przeprowadzić test. Jeśli szyfr zostanie zaakceptowany, otrzymasz „CONNECTED”, w przeciwnym przypadku „niepowodzenie uzgadniania”.

Mam nadzieję, że powyższe polecenia pomogą Ci lepiej zrozumieć OpenSSL i efektywniej zarządzać certyfikatami SSL Twojej witryny.


newsblog.pl