Kiedyś pisałem jak można uzyskać bezpłatny certyfikat SSL dla naszej strony internetowej od StartSSL/StartCom – dziś chciałbym rozszerzyć ten wątek o kilka przydatnych poleceń, dzięki którym sprawdzicie parametry m.in. swojego certyfikatu, w tym datę do kiedy jest ważny…

OpenSSL i informacje o certyfikacie

W tym celu skorzystamy z oprogramowania OpenSSL, dostępnego zarówno na urządzenia z systemem Linux, jak i Windows, które pewnie każdy z Was ma m.in. na swoim serwerze zainstalowane (choćby właśnie do obsługi certyfikatów i połączeń SSL/TLS).

Daty związane z certyfikatem sprawdzicie za pomocą polecenia:

sudo openssl x509 -noout -in /ścieżka/do/certyfikatu/ssl.crt -dates

Np.:

sudo openssl x509 -noout -in /etc/ssl/private/webinsider.pl/ssl.crt -dates

W odpowiedzi uzyskacie dwie daty związane z danym certyfikatem – początkową i końcową:

notBefore=Aug 10 22:15:18 2015 GMT
notAfter=Aug 10 17:44:06 2016 GMT

Kolejnym poleceniem możecie sprawdzić szczegóły związane np. z domena na którą certyfikat jest wystawiony:

sudo openssl x509 -noout -subject -in /ścieżka/do/certyfikatu/ssl.crt

Np.:

sudo openssl x509 -noout -subject -in /etc/ssl/private/webinsider.pl/ssl.crt

Tym razem w odpowiedzi uzyskacie domenę i adres e-mail związany z certyfikatem:

subject= /C=PL/CN=webinsider.pl/[email protected]

Za pomocą następnego polecenia odczytacie informacje o podmiocie który wystawił certyfikat:

sudo openssl x509 -noout -issuer -in /ścieżka/do/certyfikatu/ssl.crt

Np.:

sudo openssl x509 -noout -issuer -in /etc/ssl/private/webinsider.pl/ssl.crt

Co w przypadku testowanego certyfikatu wygląda tak:

issuer= /C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Signing/CN=StartCom Class 1 Primary Intermediate Server CA

A jeśli ciągle Wam mało informacji, to możecie skorzystać z kolejnego polecenia, dzięki któremu odczytacie właściwie wszystkie możliwe informacje o certyfikacie:

sudo openssl x509 -text -in /ścieżka/do/certyfikatu/ssl.crt

Np.:

sudo openssl x509 -text -in /etc/ssl/private/webinsider.pl/ssl.crt

Od razu uprzedzam, że jest tego sporo, i choćby dlatego z polecenia w tej formule korzystam niezwykle rzadko…

Skrypt do automatycznego wyłapywania wygasających certyfikatów

Podane powyżej polecenia można wykorzystać również do przygotowaniu skryptu, który np. za pomocą CRONa będzie raz dziennie sprawdzał czy przypadkiem któryś z naszych certyfikatów nie wygasa w najbliższym czasie.

Oczywiście można by pobrać datę z systemu, datę końcową certyfikatu i jakiejś obróbce ją porównywać – ale to niepotrzebne komplikowanie sobie życia, bo na szczęście mamy do dyspozycji parametr:

-checkend [czas_w_sekundach]

Za pomocą tego parametru możemy sprawdzić, czy do końca ważności certyfikatu zostało mniej lub więcej sekund niż podaliśmy jako parametr.

Np. by sprawdzić, czy któryś certyfikat nie wygasa w ciągu najbliższych 7 dni (7 dni x 24 godziny x 60 minut x 60 sekund =  604800 sekund) polecenie będzie wyglądało tak:

sudo openssl x509 -noout -in /ścieżka/do/certyfikatu/ssl.crt -checkend 604800

Choć samo z siebie nic Wam nie da, bo ważna jest w tym przypadku odpowiedź programu OpenSSL, a konkretnie kod wyjścia/zakończenia:

  • exit 0 – certyfikat ważny więcej niż podany czas
  • exit 1 – certyfikat wygasa w podanym czasie/okresie

Więc cały kod będzie wyglądał tak:

if sudo openssl x509 -noout -in /ścieżka/do/certyfikatu/ssl.crt -checkend 604800
then
    echo "OK: Certyfikat nie wygasa w ciągu najbliższych 7 dni"
else
    echo "UWAGA: Certyfikat wygasa w ciągu najbliższych 7 dni"
    # Jakaś dodatkowa akcja, np. wysłanie wiadomości e-mail
fi
(!) Zgłoś błąd na stronie
Pomogłem? To może postawisz mi wirtualną kawę?
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Patryk