Как проверить сертификат сайта руками
Браузер показывает замок и не объясняет, что за ним стоит. Если нужно понять, почему сайт не открывается, когда истекает сертификат или тот ли сертификат отдаёт сервер, достаточно одной команды.
Команда
openssl s_client -connect example.com:443 -servername example.com < /dev/null 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates
Параметр -servername важен: на одном адресе обычно живёт несколько сайтов, и сервер выбирает сертификат по имени из запроса. Без него вы можете получить сертификат по умолчанию, а не тот, который видит посетитель.
Что смотреть в ответе
- subject — кому выдан сертификат. Имя должно совпадать с адресом сайта.
- issuer — кто его выдал. Для обычных сайтов это публичный центр сертификации.
- notBefore / notAfter — срок действия. Если
notAfterв прошлом, браузер покажет предупреждение.
Сколько осталось дней
Чтобы не считать в уме, можно попросить openssl сразу проверить, продержится ли сертификат ещё, например, две недели:
openssl s_client -connect example.com:443 -servername example.com < /dev/null 2>/dev/null \
| openssl x509 -noout -checkend $((14*24*3600)) \
&& echo "ещё больше двух недель" || echo "скоро истекает"
Такую проверку удобно поставить в расписание и получать письмо, когда сертификат вот-вот закончится. Сертификаты с коротким сроком жизни обновляются автоматически, но автоматика тоже ломается, и узнавать об этом лучше заранее.
Если что-то не сходится
Чужое имя в subject означает, что сервер настроен неверно или запрос попал не на тот сайт. Неожиданный issuer стоит проверить внимательнее: так выглядит и подмена, и перехват трафика в сети, где вам подсовывают свой сертификат.