Twórz, zarządzaj i konwertuj certyfikaty SSL za pomocą OpenSSL
Jednym z najpopularniejszych poleceń SSL do tworzenia, konwertowania i zarządzania certyfikatami SSL jest OpenSSL.
Będzie wiele sytuacji, w których będziesz musiał radzić sobie z OpenSSL na różne sposoby, a tutaj wymieniłem je dla Ciebie jako podręczną ściągawkę.
W tym artykule omówię często używane polecenia OpenSSL, które pomogą ci w prawdziwym świecie.
Niektóre skróty związane z certyfikatami.
- SSL — warstwa bezpiecznego gniazda
- CSR – Żądanie podpisania certyfikatu
- TLS — bezpieczeństwo warstwy transportowej
- PEM – Poczta o zwiększonej prywatności
- DER – Wybitne reguły kodowania
- SHA – Bezpieczny algorytm mieszania
- PKCS – standardy kryptografii klucza publicznego
Notatka: Kurs obsługi SSL/TLS byłoby pomocne, jeśli nie znasz warunków.
Utwórz nowe żądanie podpisania klucza prywatnego i certyfikatu
openssl req -out newsblog.pl.csr -newkey rsa:2048 -nodes -keyout newsblog.pl.key
Powyższe polecenie wygeneruje CSR i 2048-bitowy plik klucza RSA. Jeśli zamierzasz używać tego certyfikatu w Apache lub Nginx, musisz wysłać ten plik CSR do urzędu wydawcy certyfikatu, a otrzymasz podpisany certyfikat głównie w formacie der lub pem, który musisz skonfigurować na serwerze WWW Apache lub Nginx .
Utwórz certyfikat z podpisem własnym
openssl req -x509 -sha256 -nodes -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem
Powyższe polecenie wygeneruje samopodpisany certyfikat i plik klucza z 2048-bitowym RSA. Uwzględniłem również sha256, ponieważ jest obecnie uważany za najbezpieczniejszy.
Wskazówka: domyślnie wygeneruje samopodpisany certyfikat ważny tylko przez jeden miesiąc, więc możesz rozważyć zdefiniowanie parametru –days, aby przedłużyć ważność.
Np.: posiadanie autopodpisu ważnego przez dwa lata.
openssl req -x509 -sha256 -nodes -days 730 -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem
Sprawdź plik CSR
openssl req -noout -text -in newsblog.pl.csr
Weryfikacja jest niezbędna, aby upewnić się, że wysyłasz CSR do organu emitującego z wymaganymi szczegółami.
Utwórz klucz prywatny RSA
openssl genrsa -out private.key 2048
Jeśli potrzebujesz tylko wygenerować klucz prywatny RSA, możesz użyć powyższego polecenia. Włączyłem 2048 dla silniejszego szyfrowania.
Usuń hasło z klucza
openssl rsa -in certkey.key -out nopassphrase.key
Jeśli używasz hasła w pliku klucza i używasz Apache, to za każdym razem, gdy zaczynasz, musisz wprowadzić hasło. Jeśli denerwuje Cię wprowadzanie hasła, możesz użyć powyższego openssl rsa -in newsblog.pl.key -check, aby usunąć klucz hasła z istniejącego klucza.
Zweryfikuj klucz prywatny
openssl rsa -in certkey.key –check
Jeśli masz wątpliwości co do pliku klucza, możesz użyć powyższego polecenia, aby to sprawdzić.
Sprawdź plik certyfikatu
openssl x509 -in certfile.pem -text –noout
Jeśli chcesz zweryfikować dane certyfikatu, takie jak CN, OU itp., Możesz użyć powyższego polecenia, które poda szczegóły certyfikatu.
Sprawdź urząd podpisujący certyfikat
openssl x509 -in certfile.pem -noout -issuer -issuer_hash
Organ wydający certyfikaty podpisuje każdy certyfikat i na wypadek konieczności ich sprawdzenia.
Sprawdź wartość skrótu certyfikatu
openssl x509 -noout -hash -in bestflare.pem
Konwertuj DER na format PEM
openssl x509 –inform der –in sslcert.der –out sslcert.pem
Zwykle urząd certyfikacji da ci certyfikat SSL w formacie .der, a jeśli potrzebujesz ich użyć w formacie apache lub .pem, powyższe polecenie ci pomoże.
Konwersja PEM do formatu DER
openssl x509 –outform der –in sslcert.pem –out sslcert.der
W przypadku konieczności zmiany formatu .pem na .der
Konwertuj certyfikat i klucz prywatny na format PKCS#12
openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem
Jeśli potrzebujesz użyć certyfikatu z aplikacją java lub inną, która akceptuje tylko format PKCS#12, możesz użyć powyższego polecenia, które wygeneruje pojedynczy pfx zawierający plik certyfikatu i klucza.
Wskazówka: możesz również dołączyć certyfikat łańcucha, przekazując –chain jak poniżej.
openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem -chain cacert.pem
Utwórz CSR przy użyciu istniejącego klucza prywatnego
openssl req –out certificate.csr –key existing.key –new
Jeśli nie chcesz tworzyć nowego klucza prywatnego zamiast używać istniejącego, możesz skorzystać z powyższego polecenia.
Sprawdź zawartość certyfikatu formatu PKCS12
openssl pkcs12 –info –nodes –in cert.p12
PKCS12 jest formatem binarnym, więc nie będziesz mógł przeglądać zawartości w notatniku lub innym edytorze. Powyższe polecenie pomoże ci zobaczyć zawartość pliku PKCS12.
Konwertuj format PKCS12 na certyfikat PEM
openssl pkcs12 –in cert.p12 –out cert.pem
Jeśli chcesz używać istniejącego formatu pkcs12 z Apache lub tylko w formacie pem, będzie to przydatne.
Przetestuj certyfikat SSL dla określonego adresu URL
openssl s_client -connect yoururl.com:443 –showcerts
Używam tego dość często do sprawdzania poprawności certyfikatu SSL określonego adresu URL z serwera. Jest to bardzo przydatne do sprawdzania poprawności protokołu, szyfru i szczegółów certyfikatu.
Sprawdź wersję OpenSSL
openssl version
Jeśli jesteś odpowiedzialny za zapewnienie bezpieczeństwa OpenSSL, prawdopodobnie jedną z pierwszych rzeczy, które musisz zrobić, jest zweryfikowanie wersji.
Sprawdź datę wygaśnięcia certyfikatu pliku PEM
openssl x509 -noout -in certificate.pem -dates
Przydatne, jeśli planujesz umieścić monitoring, aby sprawdzić ważność. Pokaże ci datę w składni notBefore i notAfter. notAfter to jeden, który będziesz musiał zweryfikować, aby potwierdzić, czy certyfikat wygasł lub jest nadal ważny.
Były:
[[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]#
Sprawdź datę wygaśnięcia certyfikatu SSL URL
openssl s_client -connect secureurl.com:443 2>/dev/null | openssl x509 -noout –enddate
Kolejna przydatna, jeśli planujesz zdalnie monitorować datę wygaśnięcia certyfikatu SSL lub określony adres URL.
Były:
[[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
Sprawdź, czy adres URL akceptuje protokół SSL V2 lub V3
Aby sprawdzić protokół SSL V2
openssl s_client -connect secureurl.com:443 -ssl2
Aby sprawdzić protokół SSL V3
openssl s_client -connect secureurl.com:443 –ssl3
Aby sprawdzić TLS 1.0
openssl s_client -connect secureurl.com:443 –tls1
Aby sprawdzić TLS 1.1
openssl s_client -connect secureurl.com:443 –tls1_1
Aby sprawdzić 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, czy nie, możesz użyć powyższego polecenia. Jeśli zostanie aktywowany, otrzymasz „POŁĄCZONY”, w przeciwnym razie „niepowodzenie uzgadniania”.
Sprawdź, czy dany szyfr jest akceptowany w adresie URL
openssl s_client -cipher 'ECDHE-ECDSA-AES256-SHA' -connect secureurl:443
Jeśli pracujesz nad ustaleniami dotyczącymi bezpieczeństwa, a wyniki testu pióra pokazują, że niektóre słabe szyfry są akceptowane, możesz użyć powyższego polecenia, aby sprawdzić poprawność.
Oczywiście będziesz musiał zmienić szyfr i adres URL, z którym chcesz przetestować. Jeśli wspomniany szyfr zostanie zaakceptowany, otrzymasz „CONNECTED”, w przeciwnym razie „niepowodzenie uzgadniania”.
Mam nadzieję, że powyższe polecenia pomogą Ci dowiedzieć się więcej o OpenSSL do zarządzania certyfikatami SSL dla Twojej witryny.