Простой мониторинг SSL сертификатов с помощью Zabbix — djvnsk

Простой мониторинг SSL сертификатов с помощью Zabbix — djvnsk Сертификаты

Путаются сертификаты между доменами в nginx, что делать?

так проверяйте: может быть, у вас, действительно, файлы с сертификатами перепутаны.

домен(ы), для которых выпущен сертификат, записаны в поле subject сертификата, в виде CN=имя.домена и в X509v3 Subject Alternative Name в виде DNS:имя.домена.

$ cat /путь/к/файлу | openssl x509 -noout -text | grep -E '(DNS|Subj.*CN)'
        Subject: CN=mail.domain.ru
                DNS:imap.domain.ru, DNS:mail.domain.ru, DNS:smtp.domain.ru

для проверки же информации в сертификате, который отдаёт http-сервер, команду cat /путь/к/файлу можно заменить на конструкцию:

$ :| openssl s_client -showcerts -servername имя.домена -connect имя.домена:443 2>/dev/null

к примеру, для yandex.ru (вывод я разбил на строки для удобства просмотра):

$ :| openssl s_client -showcerts -servername yandex.ru -connect yandex.ru:443 
 2>/dev/null | openssl x509 -noout -text | grep -E '(DNS|Subj.*CN)'
Subject: C=RU, O=Yandex LLC, OU=ITO, L=Moscow, ST=Russia, CN=yandex.ru
        DNS:xmlsearch.yandex.ua, DNS:yandex.net, DNS:images.yandex.ru,
DNS:xmlsearch.yandex.com.tr, DNS:family.yandex.com.tr,
DNS:people.yandex.kz, DNS:m.yandex.kz, DNS:xmlsearch.yandex.com,
DNS:play.yandex.com.tr, DNS:gorsel.yandex.com.tr, DNS:images.yandex.com,
DNS:aile.yandex.com.tr, DNS:m.yandex.ua, DNS:game.yandex.com.tr,
DNS:video.yandex.ua, DNS:yandex.com.tr, DNS:video.yandex.ru,
DNS:yandex.kz, DNS:video.yandex.com.tr, DNS:m.yandex.ru,
DNS:www.yandex.ua, DNS:www.yandex.kz, DNS:games.yandex.com.tr,
DNS:m.yandex.com, DNS:yandex.ua, DNS:yandex.by, DNS:images.yandex.ua,
DNS:xmlsearch.yandex.kz, DNS:m.yandex.by, DNS:www.yandex.ru,
DNS:video.yandex.com, DNS:video.yandex.by, DNS:oyun.yandex.com.tr,
DNS:xmlsearch.yandex.ru, DNS:people.yandex.by, DNS:people.yandex.ru,
DNS:images.yandex.kz, DNS:www.yandex.com, DNS:yandex.com,
DNS:m.yandex.com.tr, DNS:images.yandex.com.tr, DNS:www.yandex.com.tr,
DNS:xmlsearch.yandex.by, DNS:people.yandex.ua, DNS:yandex.ru,
DNS:www.yandex.by, DNS:video.yandex.kz, DNS:images.yandex.by

“Ошибка при установлении защищённого соединения.”

по этому поводу надо смотреть логи http-сервера.

а со стороны клиента как первоначальное средство диагностики можно использовать, например, wget:

$ wget -S --spider https://имя.домена

вызывает недоумение вот этот фрагмент:

listen 1.1.1.1;
listen 1.1.1.1:443 ssl;

у вас, получается, одна секция и под порт 80, и под порт 443:

Если указан только адрес, то используется порт 80.

т.е., на 80-м порту, у вас, насколько я понимаю, происходит попытка ответить клиенту на https-запрос, а не на http.

25 твитов об ssl-сертификатах

Простой мониторинг SSL сертификатов с помощью Zabbix — djvnsk

SSL сертификаты. Для чего они нужны, какие бывают, от чего защищают, кто использует, как долго действуют, есть ли гарантия? Разберем основные вопросы – кратко, в режиме твиттера – не более 280 символов на ответ.

1. Что такое SSL?

SSL означает Secure Sockets Layer – это протокол, используемый для шифрования и аутентификации данных, передаваемых между приложениями, например, браузером и веб-сервером.

2. Как появился сертификат SSL?

SSL версии 1.0 был разработан Netscape в начале 1990-х. Но из-за недостатков безопасности так и не был опубликован. Первым общедоступным выпуском был SSL 2.0, вышедший в феврале 1995 года. Это была улучшенная версия, но лишь после полного изменения дизайна утвердилась версии 3.0.

3. В чем суть сертификатов?

SSL-протокол не позволяет злоумышленникам читать и изменять транзакции и сообщения между браузером и сервером, например, передачу данных кредитных карт, логинов и т.п. Это гарантирует, что все данные останутся конфиденциальными и защищенными.

4. Что такое TLS-сертификат?

TLS (Transport Layer Security) – преемник и улучшенная версия SSL, имеет более надежные алгоритмы шифрования, но несмотря на схожесть считается другим стандартом.

5. Какие же протоколы сейчас используются?

SSL, как ни странно сейчас не используются. Было 3 версии 1.0, 2.0 и 3.0 и на основе версии SSL 3.0 создали протокол TLS 1.0. Затем вышли версии TLS 1.1, 1.2 и 1.3, а применяются только две последние.

6. Какой принцип работы SSL-сертификата?

При подключении браузера к сайту происходит «SSL-рукопожатие» (создаются ключи “рукопожатия”), далее происходит обмен криптографическими данными и в конце формируются сессионные ключи, на основе которых происходит шифрование трафика.

7. Какие существуют сертификаты?

8. И для чего каждый из них?

9. Есть ли другие виды сертификатов?

Да, например, сертификат Multi-Domain SSL на несколько доменов – не требует покупки сертификатов на каждый домен и упрощает администрирование. Code Signing certificates предназначен для защиты вашего кода, контента и других файлов во время их передачи в онлайн режиме.

10. Какие данные в SSL-сертификате?

SSL-сертификат содержит информацию:

11. В чем различия между SSL и HTTPS?

SSL – протокол безопасности, используемый для установления защищенного соединения между веб-браузером и веб-сервером. HTTPS работает как подуровень между приложениями. HTTPS шифрует обычное HTTP-сообщение перед отправкой и расшифровывает его во время доставки.

12. Как узнать, использует ли сайт SSL/HTTPS?

Большинство браузеров помечают безопасные соединения, защищенные сертификатами SSL/TLS замком и/или сообщением.

Так выглядит защищенная страница (с замочком)
Так выглядит защищенная страница (с замочком)
А так выглядит незащищенная страница. К примеру, официальный интернет-портал правовой информации http://pravo.gov.ru не защищен (владелец ФСО России)
А так выглядит незащищенная страница. К примеру, официальный интернет-портал правовой информации http://pravo.gov.ru не защищен (владелец ФСО России)

13. Как браузер может понять, корректен ли сертификат? 

Операционная система компьютера хранит список корневых сертификатов, составляющих цепочку доверия. При открытии сайта браузер проверяет всю цепочку, вплоть до корневого. Если хоть один из сертификатов оказывается недействительным, то и вся цепочка также недействительна.

Простой мониторинг SSL сертификатов с помощью Zabbix — djvnsk

14. Почему SSL сертификаты такие дорогие?

SSL-сертификаты можно рассматривать как страховку, они дороги из-за прилагаемых к ним гарантиям. Если что-то пойдет не так, то поставщик сертификатов SSL выплатит конечному пользователю, пострадавшему от сбоя SSL страховую сумму.

15. Существуют ли бесплатные сертификаты и насколько они безопасны?

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

16. Где купить?

Если ваш хост не предлагает бесплатные SSL-сертификаты или вам нужен другой тип сертификата, вы можете приобрести собственный сертификат в центре сертификации или у реселлера, имеющего скидки, что будет дешевле.

Простой мониторинг SSL сертификатов с помощью Zabbix — djvnsk

17. Что такое центр сертификации?

Центр сертификации (Certificate Authority, CA) – международная организация, которая выпускает и несет ответственность за SSL-сертификаты. CA проверяет домены и источники, подтверждающие подлинность организаций. Центрам сертификации доверяет 99% браузеров.

18. Каков процесс получения сертификата, после того как вы его оплатили?

Сначала вы генерируете CSR и секретный ключ. Затем отсылаете CSR в орган сертификации (CA) и получаете архив с текстовыми / бинарными файлами для разных типов веб-серверов. Затем устанавливаете его на хостинге или своем сервере.

Про сертификаты:  О системе персонифицированного финансирования дополнительного образования детей в Московской области от 30 июля 2019 -

19. Как воспользоваться SSL/TLS сертификатом?

20. Как проверить правильность настройки сертификата?

Один популярных способов: зайдите на сайт Qualys, введите имя сайта и нажмите кнопку “submit. Сервис осуществит проверку и выдаст оценку в баллах. Если сайт получил А или А , то сертификат работает корректно.

Простой мониторинг SSL сертификатов с помощью Zabbix — djvnsk

21. Связаны ли как-то SSL-сертификат и продвижение в сети (SEO)?

Если ваш сайт не защищен сертификатом SSL, то он получает от Google отметку «небезопасно». Кроме того, если вы хотите, чтобы контент и сайт занимали высокие позиции в результата выдачи, виртуальный замок вам всё же понадобится. Но основная цель всё же безопасность соединения.

22. Какой срок действия сертификата?

Коммерческий сертификат действует 1 год. Срок действия сертификатов неуклонно сокращался с 10 лет в 2021 году, далее до 3 лет в 2021 году, затем до двух лет в 2021 году и до года в настоящее время.  Бесплатные сертификаты действуют на 90 дней.

23. Почему SSL-сертификаты не делают вечными?

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

24. Защищает ли SSL данные сайта?

Сертификат SSL/TLS помогает защитить данные, передаваемые между посетителем и сайтом, и наоборот. Но это не означает, что информация на сервере полностью защищена – администратор должен сам решить, как ее сохранить, например, вероятно ему стоит зашифровать базу данных.

25. И всё-таки, зачем нужен SSL сертификат?

Любая информация, отправляемая через интернет, проходит через сетевое оборудование, серверы, компьютеры и прочие соединения, и если данные не зашифрованы, то это делает их уязвимыми для атак.

В заключение капля юмора. Так выглядит сайт с говорящим названием рубрики: “SSL сертификат купить дешево” – http://www.net.ru/ssl/ssl-sertifikat-kupit-deshevo

Простой мониторинг SSL сертификатов с помощью Zabbix — djvnsk

Материал подготовлен компанией ITSOFT. Размещение и аренда серверов и стоек в двух ЦОДах в Москве; colocation GPU-ферм и ASIC-майнеров, аренда GPU-серверов. Лицензии связи, SSL-сертификаты. Администрирование серверов и поддержка сайтов. UPTIME за последние годы составляет 100%.

Ssl, pct, tls и wtls (но не ssh)

Хотя SSL – самый известный и популярный, но не единственный протокол, используемый для защиты веб транзакций. Важно знать, что со времени изобретения SSL v1.0 (релиза которого, кстати говоря, не было) появилось, как минимум, пять протоколов, сыгравших более-менее важную роль в защите доступа к World Wide Web:

SSL v2.0

Релиз выпущен фирмой Netscape Communications в 1994. Основной целью этого протокола было повысить безопасность транзакций через World Wide Web. К несчастью, очень быстро нашлось несколько критических брешей в безопасности этой версии, что сделало его ненадежным для коммерческого использования:

  • Слабая конструкция MAC
  • Возможность принудительных партий для использования слабого алгоритма шифрования
  • Отсутствие защиты «рукопожатий»
  • Возможность злоумышленника осуществить атаки принудительного завершения

PCT v1.0

Разработан в 1995 году корпорацией Microsoft. В Privacy Communication Technology (PCT – Технология Конфиденциальной Связи – прим.пер.) v1.0 были усилены некоторые слабые места SSL v2.0, корпорация планировала заменить тем самым SSL. Однако, этот протокол так никогда и не получил популярности из-за появления SSL v3.0.

SSL v3.0

Релиз выпущен в 1996 году компанией Netscape Communications. В SSL v3.0 были решены большинство проблем SSL v2.0 и заимствовано множество возможностей нового для того времени протокола PCT, вследствие чего он быстро стал самым популярным протоколом для защиты соединений через WWW.

TLS v1.0 (также известный как SSL v3.1)

Опубликован IETF (Internet Engineering Task Force – Проблемная Группа Проектирования Интернет – прим.пер.) в 1999 году (RFC 2246). Протокол базируется на SSL v3.0 и PCT и согласован как с методами Netscape, так и с корпорацией Microsoft.

Стоит заметить, что если TLS базируется на SSL, он не 100% совместим со своим предшественником. IETF сделала некоторые поправки в безопасности, например использование HMAC вместо MAC, использование другого пересчета основного шифра и ключевого материала, добавлены коды предупреждения, отсутствует поддержка алгоритмов шифрования Fortezza и т.д.

WTLS

«Мобильная и беспроводная» версия протокола TLS, которая использует в качестве носителя UDP протокол. Он разработан и оптимизирован под нижнюю полосу частот и меньшую пропускную способность мобильных устройств с поддержкой WAP (Wireless Application Protocol – Протокол Беспроводных Приложений – прим.пер.).

WTLS был представлен с протоколом WAP 1.1 и был опубликован на форуме WAР. Однако, после релиза WAP 2.0, WTLS заменили профилированной версией TLS, которая оказалась намного безопаснее – в основном из-за того, что в этой версии нет необходимости расшифровки и перешифровки трафика на WAP шлюзе.

Алгоритмы шифрования

Для симметричного шифрования использовались разные алгоритмы. Первым был блочный

DES, разработанный компанией IBM. В США его утвердили в качестве стандарта в 70-х годах. В основе алгоритма лежит

с 16-ю циклами. Длина ключа составляет 56 бит, а блока данных — 64.

Развитием DES является алгоритм 3DES. Он создавался с целью совершенствования короткого ключа в алгоритме-прародителе. Размер ключа и количество циклов шифрования увеличилось в три раза, что снизило скорость работы, но повысило надежность.

Еще был блочный шифр RC2 с переменной длиной ключа, который работал быстрее DES, а его 128-битный ключ был сопоставим с 3DES по надежности. Потоковый шифр RC4 был намного быстрее блочных и строился на основе генератора псевдослучайных битов. Но сегодня все эти алгоритмы считаются небезопасными или устаревшими.

Самым современным признан стандарт AES, который официально заменил DES в 2002 году. Он основан на блочном алгоритме Rijndael и скорость его работы в 6 раз выше по сравнению с 3DES. Размер блока здесь равен 128 битам, а размер ключа — 128/192/256 битам, а количество раундов шифрования зависит от размера ключа и может составлять 10/12/14 соответственно.

Что касается асимметричного шифрования, то оно чаще всего строится на базе таких алгоритмов, как RSA, DSA или ECC. RSA (назван в честь авторов Rivest, Shamir и Adleman) используется и для шифрования, и для цифровой подписи. Алгоритм основан на сложности факторизации больших чисел и поддерживает все типы SSL-сертификатов.

Про сертификаты:  Сертификация услуг | ФБУ Севастопольский ЦСМ

DSA (Digital Signature Algorithm) используется только для создания цифровой подписи и основан на вычислительной сложности взятия логарифмов в конечных полях. По безопасности и производительности полностью сопоставим с RSA.

ECC (Elliptic Curve Cryptography) определяет пару ключей с помощью точек на кривой и используется только для цифровой подписи. Основным преимуществом алгоритма является более высокий уровень надежности при меньшей длине ключа (256-битный ECC-ключ сопоставим по надежности с 3072-битным RSA-ключом.

Более короткий ключ также влияет на время обработки данных, которое заметно сокращается. Этот факт и то, что алгоритм эффективно обрабатывает большое количество подключений, сделали его удобным инструментом для работы с мобильной связью. В SSL-сертификатах можно использовать сразу несколько методов шифрования для большей защиты.

Аутентификация веб сервера

Итак, нам удалось настроить и протестировать SSL/TLS, но веб-браузер не смог проверить подлинность веб-сервера. В первой статье мы использовали сертификат веб-сервера, созданного только в целях тестирования и не содержащего информацию, требуемую для настоящей аутентификации и коммерческих транзакций.

Для того чтобы браузер смог успешно аутентифицировать веб-сервер, мы должны создать нормальный соответствующий сертификат веб-сервера, который будет содержать:

  • Открытый ключ веб-сервера
  • Даты подлинности (начала и истечения)
  • Поддерживаемые алгоритмы шифрования
  • Отличительное имя (the distinguish name DN), которое должно содержать полностью определенное доменное имя веб-сервера, называемое общим именем (Common Name CN). Опционально DN может содержать и некоторые другие атрибуты, например, страну (Country C), штат (State S), Расположение (Location L), название организации (the Organization’s name O), название службы организации (the Organization Unit’s name OU), и др.
  • Серийный номер сертификата
  • Атрибуты X.509v3, которые будут сообщать веб-браузерам о типе и применении
  • URI CRL (если есть)
  • URI политики сертификата X.509v3 (если есть)
  • Имя и подпись доверенного источника сертификатов (Certification Authority CA)

Стоит отметить, что атрибут общее имя (Common Name CN) должен иметь значение, равное доменному имени сервера (Fully Qualified Domain Name FQDN). Иначе браузерам не удастся определить принадлежность сертификата веб-серверу, на котором присутствует наш сертификат.

Пример сертификата веб-сервера (текстовая репродукция):

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 1 (0x1)
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: O=Seccure, OU=Seccure Root CA
        Validity
            Not Before: Nov 28 01:00:20 2004 GMT
            Not After : Nov 28 01:00:20 2005 GMT
        Subject: O=Seccure, OU=Seccure Labs, CN=www.seccure.lab
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (1024 bit)
                Modulus (1024 bit):
                    00:c1:19:c7:38:f4:89:91:27:a2:1b:1d:b6:8d:91:
                    48:63:0e:3d:0d:2e:f8:65:45:56:db:98:4d:11:21:
                    01:ac:81:8e:3f:64:4a:8a:3f:21:15:ca:49:6e:64:
                    5c:5d:a2:ab:5a:48:cb:2a:9f:0c:02:b9:ff:52:f6:
                    d9:39:6d:a3:4a:94:41:f9:e9:ab:f0:42:fb:68:9a:
                    4b:53:41:e7:4f:b0:2b:02:d7:92:a2:2b:02:a2:f9:
                    f1:2d:68:fa:50:01:2f:49:c1:28:2f:a8:c6:6d:6d:
                    ab:1d:b9:bd:c9:80:63:f1:d6:22:19:de:2d:4a:43:
                    50:76:79:7e:a5:5a:75:af:19
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Cert Type:
                SSL Server
            X509v3 Key Usage:
                Digital Signature, Key Encipherment
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, Netscape Server Gated Crypto, 
                                                             Microsoft Server Gated Crypto
            Netscape Comment:
                OpenSSL Certificate for SSL Web Server
    Signature Algorithm: sha1WithRSAEncryption
        45:30:9d:04:0e:b7:86:9e:61:a1:b0:68:2b:44:93:1c:57:2a:
        99:42:bb:16:b1:ab:f5:c0:d2:33:12:c8:d3:1d:2b:bb:6b:9a:
        4c:c7:53:bc:e4:88:ef:1e:c3:37:ed:53:2c:15:cf:b8:90:df:
        df:4b:34:b8:db:cc:23:77:46:06:72:9d:43:60:a8:a2:ed:0a:
        bb:1a:a4:e8:4e:ba:66:93:63:74:87:fd:43:48:b6:93:a2:e3:
        3d:da:1b:64:46:35:88:b4:4b:22:e6:3c:84:70:5d:88:dd:64:
        c2:51:c2:d6:59:80:87:bc:bd:7f:e3:c1:45:7e:c0:5f:9c:ca:
        e1:a1

Примеры, представленные в последующих разделах статьи основаны на значениях, показанных в Таблице 3. Для создания соответствующих сертификатов читателю потребуется изменить эти значения на название их собственной компании или организации.

Описание атрибута

Атрибут

Пример значения

Код страны – Country code (two letters)CC = PL
Штат или регион – State or ProvinceSS = mazowieckie
Расположение – LocationLL = Warsaw
Название организации – Organization NameOO = Seccure
Название службы организации – Organization UnitOUOU = Seccure Labs
Общее имя – Common NameCNCN = www.seccure.lab

Table 3. Примеры значений сертификата.

Отслеживание срока действия сертификата с помощью zabbix | глеб воронов | tradenark llc

Случился на моей практике интересный инцидент из серии «умная мысля приходит опосля»: хостер(да и сам владелец тоже) профукал срок действия SSL сертификата на сайте. Не сказать, что ситуация критичная, но всё равно неприятный осадок остался. Было решено написать скрипт мониторинга срока действия сертификатов и мониторить это дело zabbix-ом.
Система позволяет значительно расширять базовый функционал, используя для этого любые языки программирования.
Хочу заметить, что везде, где планируется мониторить больше 3 инстансов я использую полюбившееся мне решение low level discovery(LLD) — возможность автоматического создания элементов данных, триггеров и графиков для разных(любых) ресурсов операционной системы. Не буду вдаваться в подробности, почитать об этом можно по вышеприведённой ссылке.
Для работы этого мониторинга потребуется несколько скриптов:
— первый будет генерировать ответ для discovery в JSON-формате
— второй будет парсить дату окончания сертификата и считать сколько дней осталось
— третий файл(не исполняемый) будет содержать список хостов, для которых будут сниматься данные

Наглядно:

# ls -l /etc/zabbix/scripts/sslcheck/
-rw-r--r--. 1 zabbix zabbix   49 Aug 31 20:43 list.txt
-rwxr-xr-x. 1 zabbix zabbix  548 Aug 31 20:11 ssl_check.sh
-rwxr-xr-x. 1 zabbix zabbix  185 Aug 31 20:45 ssl_discovery.sh

Начнём с самого простого — список хостов.
Располагаются они по одному в строке, ничего сложного. Как только необходимо добавить сайт в систему отслеживания нужно всего то дописать его в конец файла. Через пару минут данные появятся.

# cat /etc/zabbix/scripts/sslcheck/list.txt
ukraine.com.ua
google.com.ua
vk.com
facebook.com

Дальше составляющая обнаружения. Данные должны быть в определённом формате для того, что бы zabbix сумел их принять
Листинг файла следующий:

# cat /etc/zabbix/scripts/sslcheck/ssl_discovery.sh
#!/bin/bash
JSON=$(for i in `cat /etc/zabbix/scripts/sslcheck/list.txt`; do printf "{"{#SSL}":"$i"},"; done | sed 's/^(.*).$/1/')
printf "{"data":["
printf "$JSON"
printf "]}"

При выполнении получаем вот такой результат:

# /etc/zabbix/scripts/sslcheck/ssl_discovery.sh
{"data":[{"{#SSL}":"ukraine.com.ua"},{"{#SSL}":"google.com.ua"},{"{#SSL}":"vk.com"},{"{#SSL}":"facebook.com"}]}

Имя макроса {#SSL} можно заменить на своё, но тогда его нужно будет сменить и в шаблоне (файл прилагается в конце статьи)
В действительности как раз {#SERVER} или {#HOSTNAME} подойдут больше, но существенной разницы нет.

Далее главный скрипт, который получает информацию о сертификате сайта, парсит необходимое поле и высчитывает разницу

# cat /etc/zabbix/scripts/sslcheck/ssl_check.sh
#!/bin/sh
SERVER=$1
TIMEOUT=25
RETVAL=0
TIMESTAMP=`echo | date`
if [ -z "$2" ]
then
PORT=443;
else
PORT=$2;
fi
EXPIRE_DATE=`echo | openssl s_client -connect $SERVER:$PORT -servername $SERVER 2>/dev/null | openssl x509 -noout -dates 2>/dev/null | grep notAfter | cut -d'=' -f2`
EXPIRE_SECS=`date -d "${EXPIRE_DATE}"  %s`
EXPIRE_TIME=$(( ${EXPIRE_SECS} - `date  %s` ))
if test $EXPIRE_TIME -lt 0
then
RETVAL=0
else
RETVAL=$(( ${EXPIRE_TIME} / 24 / 3600 ))
fi

echo ${RETVAL}

Не думаю, что очень нужны пояснения, но всё же:
1) EXPIRE_DATE — дата окончания действия сертификата в формате Sep 16 11:56:55 2021 GMT
2) EXPIRE_SECS — перевод полученного результата в Unix-timestamp (количество секунд до этого момента, начиная с полуночи 1 января 1970 года)
3) EXPIRE_TIME — высчитываем разницу между текущим временем и временем действия SSL
4) RETVAL — перевод секунд в сутки для наглядности

Про сертификаты:  Сертификация продукции и услуг рядом с метро Войковская в Москве

Делаем файлы исполнительными и на всякий случай указываем пользователя zabbix в качестве владельца:

# chmod  x /etc/zabbix/scripts/sslcheck/ssl_check.sh
# chmod  x /etc/zabbix/scripts/sslcheck/ssl_discovery.sh
# chown zabbix:zabbix /etc/zabbix/scripts/sslcheck/ssl_check.sh
# chown zabbix:zabbix /etc/zabbix/scripts/sslcheck/ssl_discovery.sh

Сам вывод крайне прост:

# /etc/zabbix/scripts/sslcheck/ssl_check.sh vk.com
15
# /etc/zabbix/scripts/sslcheck/ssl_check.sh google.com
70

так же можно проверить как будет вести себя скрипты, если запускаться они будут от пользователя zabbix:

# sudo -u zabbix /etc/zabbix/scripts/sslcheck/ssl_check.sh google.com
# sudo -u zabbix /etc/zabbix/scripts/sslcheck/ssl_discovery.sh

Если всё ок — можно переходить к завершающей стадии: внедрению этого функционала в наш zabbix-сервер
Проверим, сконфигурирован ли агент на создание пользовательских параметров

# cat /etc/zabbix/zabbix_agentd.conf | grep Include | grep -v "#"
Include=/etc/zabbix/zabbix_agentd.d/*.conf

Отлично, теперь создадим файл, в котором укажем новые ключи:

# cat /etc/zabbix/zabbix_agentd.d/ssl.conf
UserParameter=ssl.discovery[*],/etc/zabbix/scripts/sslcheck/ssl_discovery.sh
UserParameter=ssl.expire[*],/etc/zabbix/scripts/sslcheck/ssl_check.sh $1

После всего нужно перезапустить агент что бы он перечитал новенькие ключи

# service zabbix-agent restart

Что бы не дожидаться данных, которые появятся в соответствии с указанным в шаблоне интервалом, можно проверить работоспособность новых ключей следующим образом:

# zabbix_agentd -t 'ssl.discovery'
ssl.discovery                                 [t|{"data":[{"{#SSL}":"ukraine.com.ua"},{"{#SSL}":"google.com.ua"},{"{#SSL}":"vk.com"},{"{#SSL}":"facebook.com"}]}]
# zabbix_agentd -t 'ssl.expire[telegram.org]'
ssl.expire[telegram.org]                      [t|1134]

Работает, отлично. Значит и данные скоро пойдут
А вот так они выглядят, если немного подождать. Ну и обновляться будут в зависимости от ваших таймеров.
Так как счет ведётся на сутки, то не вижу смысла обновлять данные чаще, чем раз в час.
Если, к примеру, сертификат истекает через 27 дней, то сколько бы раз в день мы не проверяли данные — это число так и будет 27.
Однако, каждому своё. Устанавливайте интервал обновления рассудительно

zabbix_SSL

А так выглядит отработанный триггер
zabbix_SSL_expire_trigger

Скачать XML-шаблонабсолютно бесплатно! 🙂

Файлы для фряхи можно забрать с гита. На здоровье

Простой мониторинг ssl сертификатов с помощью zabbix v2

Обновил шаблон мониторинга ssl сертификатов zbx_export_templates_ssl2.xml

Так же как и в случае предыдущей версии импортируем шаблон и прикрепляем к узлу Zabbix server.

Пользовательские параметры в конфиге на заббикс сервере /etc/zabbix/zabbix_agentd.conf

UserParameter=ssl.current,date  %s
UserParameter=ssl.1w,echo 604800
UserParameter=ssl.2w,echo 1209600
UserParameter=ssl.3w,echo 1814400

UserParameter=ssl.eol[*],date -d "`echo | openssl s_client -connect "$1":"$2" 2>/dev/null | openssl x509 -noout -dates | grep "notAfter" | sed 's|.*notAfter=||'`"  %s
UserParameter=ssl.ttl[*],echo `date -d "`echo | openssl s_client -connect "$1":"$2" 2>/dev/null | openssl x509 -noout -dates | grep 'notAfter' | sed 's|.*notAfter=||'`"  %s`-`date  %s` | bc

Можно добавить мониторинг сертификатов, у которых есть срок действия, но нет возможности собственно мониторинга и мы знаем только срок действия и что его нужно будет продлевать. Дату необходимо сконвертировать в unix формат, например на http://www.cy-pr.com/tools/time/

# Некий сертификат, назовём его cert
UserParameter=ssl.eol.cert,echo 1531353600
UserParameter=ssl.ttl.cert,echo 1531353600-`date  %s` | bc

В триггерах теперь отображается время до окончания срока действия сертификата:

Простой мониторинг SSL сертификатов с помощью Zabbix — djvnsk

В последних данных. EOL — end of life (когда закончится), TTL — time to live (сколько осталось времени):

Простой мониторинг SSL сертификатов с помощью Zabbix — djvnsk

Способ 2: сертификат, подписанный доверенным ca (рекомендуется)

Создание запроса на сертификат и подписка его доверенным CA (таким как Thawte, RSA и др.) наиболее рекомендуемое дальнейшее действие, если вы хотите открыть публичный доступ к вашему сайту из Интернет. При использовании этого метода отпадает необходимость в установке сертификатов в каждый веб-браузер, ведь большинство из них уже имеют в установке несколько сертификатов от доверенных CA.

Не забывайте, что каждый СА имеет разные ограничение на атрибут DN, поэтому читателю стоит заранее ознакомиться с ними. Рекомендуется также выбирать такие сертификаты, которые установлены в большинстве веб браузеров (Thawte, Verisign и некоторые другие). Иначе, у веб-браузера пользователя возникнут проблемы с аутентификацией веб-сервера.

Процесс получения подписанного сертификата от доверенного СА состоит из следующих шагов:

  1. Первым делом, следует создать пару закрытого/открытого ключа (server.key) и запрос сертификата (request.pem), как показано ниже:
openssl req  
-new  
-sha1  
-newkey rsa:1024  
-nodes  
-keyout server.key  
-out request.pem  
-subj '/O=Seccure/OU=Seccure Labs/CN=www.seccure.lab'

2.  Теперь мы должны послать запрос на получение сертификата (request.pem) в СА и дождаться, пока он будет подписан и отослан обратно в виде сертификата.

3.  После получения сертификата от доверенного СА мы должны удостовериться в том, что он закодирован в формате PEM, а не TXT или DER. Если же полученный сертификат не соответствует формату РЕМ, то мы должны конвертировать его, в каком бы формате он не пришел.

Самый простой способ проверить формат сертификата это просмотреть его в текстовом редакторе. В зависимости от того, как выглядит сертификат, он может быть в одном из следующих форматов (типичные расширения файлов представлены в скобках):

    • PEM, Base64 кодировка формата X.509 (*.crt, *.pem, *.cer)
-----BEGIN CERTIFICATE-----
MIICdzCCAeCgAwIBAgIBATANBgkqhkiG9w0BAQUFADAsMRAwDgYDVQQKEwdTZWNj
dXJlMRgwFgYDVQQLEw9TZWNjdXJlIFJvb3QgQ0EwHhcNMDQxMTI4MDEwMDIwWhcN
...
ou0Kuxqk6E66ZpNjdIf9Q0i2k6LjPdobZEY1iLRLIuY8hHBdiN1kwlHC1lmAh7y9
f PBRX7AX5zK4aE=
-----END CERTIFICATE-----
    • TXT PEM format (*.crt, *.cer, *.pem, *.txt)
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 1 (0x1)
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: O=Seccure, OU=Seccure Root CA
...
            RSA Public Key: (1024 bit)
                Modulus (1024 bit):
                    00:c1:19:c7:38:f4:89:91:27:a2:1b:1d:b6:8d:91:
...
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
...
-----BEGIN CERTIFICATE-----
MIICdzCCAeCgAwIBAgIBATANBgkqhkiG9w0BAQUFADAsMRAwDgYDVQQKEwdTZWNj
dXJlMRgwFgYDVQQLEw9TZWNjdXJlIFJvb3QgQ0EwHhcNMDQxMTI4MDEwMDIwWhcN
...
ou0Kuxqk6E66ZpNjdIf9Q0i2k6LjPdobZEY1iLRLIuY8hHBdiN1kwlHC1lmAh7y9
f PBRX7AX5zK4aE=
-----END CERTIFICATE-----

Команда для конвертирования формата TXT PEM в РЕМ:

openssl x509 -in signed_cert.pem -out server.crt
    • DER, двоичная кодировка X.509 (*.der, *.crt, *.cer)

[Нетекстовое, двоичное представление]

Команда для преобразования формата DER в РЕМ:

openssl x509 -in signed_cert.der -inform DER -out server.crt
  1. Верификация и тестирование сертификата

Перед установкой сертификата мы должны проверить, действительно ли он законный и может быть использован в целях аутентификации веб-ервера:

openssl verify -CAfile /path/to/trusted_ca.crt -purpose sslserver server.crt

Кроме того, было бы неплохо убедиться в том, что наш сертификат соответствует ранее созданному закрытому ключу (результаты выполнения обеих команд должны быть одинаковыми):

openssl x509 -noout -modulus -in server.crt | openssl sha1
openssl rsa -noout -modulus -in server.key | openssl sha1

Оцените статью
Мой сертификат
Добавить комментарий