Jak używać OpenSSL S_Client

Jak używać OpenSSL S_Client
Jeśli jesteś odpowiedzialny za utrzymanie aplikacji chronionych TLS, konieczna jest wiedza o tym, jak korzystać. Wiele serwerów i aplikacji internetowych opiera się na OpenSSL, bibliotece kryptograficznej, aby zaoferować im ochronę kryptograficzną w celu zabezpieczenia ich komunikacji przez Internet.

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:

  1. -SSL2: SSL wersja 2
  2. -SSL3: SSL wersja 3
  3. -TLS1: Wersja 1.0
  4. -TLS1_1: Wersja 1.1
  5. -TLS1_2: Wersja 1.2

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.