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