Из этой статьи вы узнаете, как подключиться к сайту по HTTPS
и проверить срок действия SSL сертификата из командной строки в Linux.
Помимо срока действия, я покажу, как узнать кем выдан SSL сертификат, кому он выдан, его SHA1
отпечаток и другую полезную информацию.
Пользователи Linux могут легко проверить срок действия SSL сертификата из командной строки в Linux, с помощью утилиты openssl
, которая может подключаться к удаленному сайту по HTTPS
, декодировать SSL сертификат и извлекать из него всю необходимую информацию.
Дельный Совет: Если в скором времени оканчивается срок действия вашего SSL сертификата — вам будет необходимо сгенерировать новый CSR! В Linux это можно легко сделать с помощью одной строки! Читать далее →
Проверить Срок Действия SSL Сертификата
Выполните следующую команду из командной строки в Linux, чтобы узнать срок действия SSL сертификата, с помощью openssl
:
$ echo | openssl s_client -servername ИМЯ -connect ХОСТ:ПОРТ 2>/dev/null | openssl x509 -noout -dates
Краткое разъяснение:
Опция | Описание |
---|---|
-connect ХОСТ:ПОРТ |
Хост и порт для подключения. |
-servername ИМЯ |
TLS SNI (Server Name Indication) расширение (имя сайта). |
Информация: Выполните man s_client
, чтобы ознакомиться со всеми доступными опциями.
В качестве примера, воспользуемся openssl
, чтобы проверить срок действия SSL сертификата установленного на сайте https://www.shellhacks.com
:
$ echo | openssl s_client -servername www.shellhacks.com -connect www.shellhacks.com:443 2>/dev/null | openssl x509 -noout -dates notBefore=Mar 18 10:55:00 2017 GMT notAfter=Jun 16 10:55:00 2017 GMT
OpenSSL: Проверка SSL Сертификата — Дополнительная Информация
Помимо срока действия, SSL сертификат содержит много интересной информации.Каждый SSL сертификат содержит информацию о том, кем он был выдан, кому он выдан, его срок действия, о чем уже говорилось выше, SHA1
отпечаток SSL сертификата и прочее.
Все эти данные могут быть извлечены из SSL сертификата сайта, с помощью программы openssl
из командной строки в Linux.
Проверить кто выдал SSL сертификат:
$ echo | openssl s_client -servername shellhacks.com -connect shellhacks.com:443 2>/dev/null | openssl x509 -noout -issuer issuer= /C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
Проверить кому выдан SSL сертификат:
$ echo | openssl s_client -servername shellhacks.com -connect shellhacks.com:443 2>/dev/null | openssl x509 -noout -subject subject= /CN=www.shellhacks.com
Проверить срок годности SSL сертификата:
$ echo | openssl s_client -servername shellhacks.com -connect shellhacks.com:443 2>/dev/null | openssl x509 -noout -dates notBefore=Mar 18 10:55:00 2017 GMT notAfter=Jun 16 10:55:00 2017 GMT
Показать всю перечисленную выше информацию об SSL сертификате одной командой:
$ echo | openssl s_client -servername shellhacks.com -connect shellhacks.com:443 2>/dev/null | openssl x509 -noout -issuer -subject -dates issuer= /C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3 subject= /CN=www.shellhacks.com notBefore=Mar 18 10:55:00 2017 GMT notAfter=Jun 16 10:55:00 2017 GMT
Дельный Совет: Если у вас где-то локально лежит файл с SSL сертификатом, его также можно декодировать с помощью openssl
из командной строки в Linux! Читать далее →
Получить SHA1
отпечаток SSL сертификата:
$ echo | openssl s_client -servername www.shellhacks.com -connect www.shellhacks.com:443 2>/dev/null | openssl x509 -noout -fingerprint SHA1 Fingerprint=26:F8:D5:E4:3E:7A:7B:7E:72:20:15:77:FE:C7:89:E7:E4:8A:15:CF
Извлечь всю имеющуюся информацию из SSL сертификата (декодировать):
$ echo | openssl s_client -servername www.shellhacks.com -connect www.shellhacks.com:443 2>/dev/null | openssl x509 -noout -text Certificate: Data: Version: 3 (0x2) Serial Number: 03:86:f4:63:3d:34:50:a8:47:cc:f7:99:10:1f:79:1c:21:c8 Signature Algorithm: sha256WithRSAEncryption [...]
Показать сам SSL сертификат (в закодированном виде):
$ echo | openssl s_client -servername shellhacks.com -connect shellhacks.com:443 2>/dev/null | openssl x509 -----BEGIN CERTIFICATE----- MIIFGDCCBACgAwIBAgISA4b0Yz00UKhHzPeZEB95HCHIMA0GCSqGSIb3DQEBCwUA MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xNzAzMTgxMDU1MDBaFw0x [...]
Обобщающая таблица:
Опция | Описание |
---|---|
-text |
Печатает сертификат в расшифрованном виде. |
-noout |
Запрещает вывод закодированной версии запроса. |
-subject |
Выводит тему сертификата. |
-issuer |
Выводит кем был выдан сертификат. |
-dates |
Печатает сроки действия сертификата. |
-fingerprint |
Печатает SHA1 отпечаток закодированной версии всего сертификата. |
Информация: Выполните man x509
, чтобы ознакомиться со всеми доступными опциями.
Very useful, thanks!
If you’re not getting any dates out and the first openssl command is spitting out a «tlsv1 alert protocol» error and you’re using OS X, you may need to install Homebrew’s openssl and use that instead.
Awesome
This worked for me. Good writing, thanks.
Exactly what I needed. Thanks!
It might helpful for some one
echo | openssl s_client -servername NAME -connect host:port 2>/dev/null | openssl x509 -noout -dates | grep notAfter | awk ‘{print $1,$2,$4}’| cut -b 10-14,15-
u r my hero 🙂
Instead of
«echo | openssl …»
you could simply use
«openssl … </dev/null".
Has some way to list the validate of all certificate chain, like CA and intermediate ?
Hi Rafael,
Have you figured out a way to do this?