OpenSSL współpracuje z protokołami SSL i TLS. Omówimy różne sposoby korzystania z OpenSSL S_Client do testowania i weryfikacji połączeń SSL.
Przykłady użytkowania OpenSSL S_Client
Zestaw narzędzi OpenSSL oferuje wiele opcji, które można określić w celu osiągnięcia różnych celów.
1. Przetestuj połączenie
Aby przetestować łączność usługi HTTPS i wyświetlić informacje diagnostyczne związane z połączeniem SSL z danym serwerem, w tym informacje, takie jak łańcuch certyfikatów, musisz użyć -łączyć flaga.
$ openssl s_client - Connect [Yourdomain].com: 443
Używamy portu 443, ponieważ jest on preferowany dla bezpiecznego HTTP przez TLS/SSL. Dane wyjściowe polecenia wyświetla podstawowe szczegóły dotyczące połączenia, które tworzysz z serwerem.
Na przykład będziemy używać Kyle.com jako serwer.
2. Wydrukuj wszystkie certyfikaty
Usługa SSL przedstawia łańcuchy certyfikatów i możesz wyświetlać je wszystkie, co jest pomocne, gdy trzeba rozwiązywać problemy z certyfikatami, takimi jak certyfikaty misordering.
$ openssl s_client -Connect Kyle.com: 443 -Showcerts
Wyjście pokaże różne certyfikaty jako odzwierciedlenie na następującym obrazie:
Możesz ręcznie sprawdzić każdy z certyfikatów zwracanych przez serwer z wyjścia.
3. Sprawdź ważność certyfikatu
Po zwróceniu łańcucha certyfikatów przez serwer możesz przetestować, jak ważne są one.
$ openssl s_client -Connect Kyle.com: 443 -Brief
Aby potwierdzić ważność, poszukaj Weryfikacja, a jego wyjście powinny odczytać "OK".
-krótki Flaga pomaga zawęzić moc wyjściową, wykluczając niektóre szczegółowe szczegóły.
W naszym przypadku potwierdzamy, że nasze certyfikaty są ważne.
4. Sprawdź daty ważności certyfikatu
Korzystając z OpenSSL S_Client, możesz sprawdzić daty ważności certyfikatu witryny z wiersza poleceń. Tutaj będziesz musiał połączyć dwa polecenia, jak odzwierciedlono poniżej:
$ openssl s_client -Connect Kyle.com: 443 2> /dev /null | OpenSsl x509 -Noout -Dates
-Noout Flaga tłumi polecenie wyświetlania zakodowanego certyfikatu.
Dane wyjściowe pokazuje zakres, kiedy certyfikaty wygasną. Jako administrator systemu takie szczegóły są niezbędne, ponieważ poznajesz, kiedy musisz uzyskać nowy certyfikat.
5. Sprawdź połączenie SSL
Aby sprawdzić status połączenia SSL z serwerem, użyj -Verify_return_error flaga.
$ openssl s_client -verify_return_error -Connect Kyle.com: 443
Jeśli połączenie się powiedzie, uścisk dłoni minie. Ale jeśli widzisz błędy, oznacza to, że uścisk dłoni SSL nie powiódł się i nie można nawiązać połączenia.
6. Zobacz odcisk palca certyfikatu SSL
Certyfikaty SSL mają odcisk palca. Możesz uzyskać odcisk palca certyfikatu, jak pokazano następująco:
$ openssl s_client -Connect Kyle.com: 443 2> /dev /null | OpenSsl x509 -Noout -fingerprint
7. Podaj szyfr
Możesz określić, który typ szyfrowania lub szyfrowania użyć dla certyfikatu za pomocą -szyfr flaga. Na przykład możemy określić, aby użyć DHE-PSK-AES128-CBC-SHA. W ten sposób strona klienta będzie musiała użyć określonego pakietu szyfru do połączenia.
$ openssl s_client -Connect Kyle.com: 443 -Chipher DHE-PSK-AES128-CBC-SHA
Możesz wyświetlić listę dostępnych szyfrów za pomocą następującego polecenia:
$ openssl szyfrów
Wyjście powinno wyglądać podobnie do następującego obrazu:
8. Podaj wersję SSL/TLS i szyfry do użycia
S_Client, domyślnie negocjuje wersję protokołu dla SSL/TL do użycia. Niemniej jednak możesz określić, których wersji użyć dowolnej z następujących opcji:
Ponadto, zanim określisz, z których szyfrów użyć, możesz najpierw sprawdzić obsługiwane wersje. W poniższym przykładzie sprawdzimy TLS1_3 Wersje.
Polecenie jest następujące:
$ openSsl Ciphers -S -tls1_3
Obsługiwane szyfry to:
Jeśli chcesz określić podaną wersję SSL/TLS dla połączenia, musisz ją tylko dodać podczas testowania połączenia, jak w przypadku poniżej:
$ openssl s_client -Connect Kyle.com: 443 -tls1_3
Jeśli nie chcesz używać danej wersji, przygotuj NIE_ do nazwy. Przykład wyłączenia TLS1_1 byłoby no_tls1_1. W takim przypadku będą używane inne wersje protokołu.
9. Wyślij wiadomość specyficzną dla protokołu
OpenSSL obsługuje różne protokoły, takie jak FTP, IRC, SMTP, LDAP, POP3, IMAP itp. Kiedy musisz przetestować połączenie za pomocą określonego protokołu lub określić, który protokół do użycia do komunikacji, możesz użyć -starttls flaga.
Na przykład, aby przetestować certyfikat HFTP, użyj następującego polecenia:
$ openssl s_client -Connect Kyle.com: 443 -Starttls ftp -servername Kyle.com
10. Sprawdź nazwę hosta
Aby zweryfikować nazwę hosta, użyj -Verify_hostname. Jeśli nazwa hosta nie pasuje, otrzymasz komunikat o błędzie weryfikacji jak ten poniżej:
W takim przypadku musisz uzyskać certyfikat z SAN lub CN, który pasuje do Twojej domeny.
Wniosek
Zestaw narzędzi OpenSSL ma niekończące się opcje, których możesz użyć, aby zaspokoić potrzebę. Omówiliśmy te wspólne, ale strona główna jest Twoim najlepszym zasobem, jeśli potrzebujesz więcej zbadania. Uczenie się OpenSSL ułatwi twoje życie w kontaktach z serwerami i połączeniami dla dowolnych zadań administracyjnych systemu. Dlatego postanowić ćwiczyć polecenie.