Проверка сертификата сервера из bash

Thank you for reading this post, don't forget to subscribe!

Про­вер­ка сер­ти­фи­ка­та сер­ве­ра из bash может быть полез­на для мони­то­рин­га, что­бы не про­пу­стить дату про­дле­ния сер­ти­фи­ка­та. Такие про­бле­мы как про­дле­ние домен­но­го име­ни и про­дле­ние SSL-сер­ти­фи­ка­та доста­точ­но рас­про­стра­не­ны, даже серьез­ные орга­ни­за­ции ино­гда забы­ва­ют про­пла­тить домен или купить новый сер­ти­фи­кат. Поэто­му хоро­шей прак­ти­кой явля­ет­ся мони­то­ринг даты окон­ча­ния дей­ствия сер­ти­фи­ка­та и домен­но­го име­ни. С домен­ным име­нем раз­бе­рем­ся в дру­гой раз, а пока давай­те посмот­рим, как напи­сать скрипт, кото­рый не толь­ко пока­жет поля сер­ти­фи­ка­та на уда­лен­ном сер­ве­ре, но и ска­жет, сколь­ко дней оста­лось до окон­ча­ния сертификата.

Что нам потребуется

Для про­вер­ки будем исполь­зо­вать, есте­ствен­но, Linux. Имен­но на нем чаще все­го сто­ят систе­мы мони­то­рин­га, такие как Zabbix и Nagios. Кро­ме сер­ве­ра с Linux’ом нам еще кое-что потре­бу­ет­ся. Преж­де все­го OpenSSL (чем све­жее, тем луч­ше), и, конеч­но же, bash, на кото­ром мы и будем писать скрипт. Этот скрипт будет поле­зен как при руч­ной про­вер­ке, так и при авто­ма­ти­зи­ро­ван­ных проверках.

Проверка сертификата сервера из bash

Вот как будет орга­ни­зо­ва­на про­вер­ка. Мы откры­ва­ем SSL-соеди­не­ние с сер­ве­ром, полу­ча­ем сер­ти­фи­кат, пере­да­ем его на обра­бот­ку OpenSSL (openssl x509), полу­чая таким обра­зом инфор­ма­цию по полям, а если нам нуж­но посчи­тать, сколь­ко вре­ме­ни оста­лось до исте­че­ния сро­ка дей­ствия сер­ти­фи­ка­та, будет исполь­зо­вать отдель­ный пара­метр, кото­рый нам про­сто выве­дет коли­че­ство дней в фор­ма­те «N days».

Вот сам скрипт с комментариями:

Что можно улучшить

Мож­но допи­сать свои функ­ции, кото­рые будут выво­дить инфор­ма­ция в удоб­ном для даль­ней­ше­го исполь­зо­ва­ния фор­ма­те, если вы пла­ни­ру­е­те куда-то пере­да­вать эти дан­ные для ста­ти­сти­ки или обра­бот­ки. Плюс мож­но доба­вить про­вер­ку пара­мет­ров (выво­дить текст о том, что недо­ста­точ­но пара­мет­ров), но в дан­ном слу­чае это не так важ­но, посколь­ку назна­че­ние это­го скрип­та — мони­то­ринг, что зна­чит, что, ско­рее все­го, настра­и­вать­ся он будет один раз.