Мониторинг ssl сертификатов, хранящихся локально

Данное решение потенциально является брешью в безопасности организации,
рекомендую использовать с осторожностью
исключительно внутри локального сегмента сети, с базовой авторизацией и по HTTPS.
За возможные проблемы автор не несёт ответственности.

Возникла необходимость как-то следить за сроком действия сертификатов, которые мы используем внутри организации, как правило они выданы нашем локальным CA. Так же имеется ряд сертификатов, выданных сторонними CA — для аутентификации в банках, на различных порталах итп.

Так появилось на свет решение в виде веб-страницы, на которую можно выгрузить сам сертификат, закрытый ключ (при необходимости) и оставить комментарий к сертификату.
Можно загружать сразу несколько сертификатов с ключами или без — не важно, страница определит если есть ключ и отобразит это в таблице.
ВАЖНО: для определения пары ключ+сертификат имена фалов должны быть одинаковыми до расширения, например cert.crt и cert.key
Если дней действия сертификата остаётся менее 14 — строчка с записью выделяется красным цветом — и это можно мониторить хоть тем же Zabbix.

Конфиденциальные данные искажены

Под катом инструкция как поднять эту страницу у себя.


В моём случае используется CentOS 6.9 с уже установленным Apache и PHP 5.6

  1. Скачиваем архив к себе на сервер и распаковываем в директорию /var/www/:
    cd /var/www
    wget https://shiningapples.net/stuff/certs_manager.tar.gz
    tar -xzf certs_manager.tar.gz
    
  2.  Для корректной работы автообновления страницы после загрузки файлов необходимо изменить URL на свой почти в самом конце кода страницы index.php:
    window.location = "https://certs.my.domain"
    
  3.  Перед конфигурацией Apache необходимо создать файл .htpasswd и добавить пользователя для работы HTTP авторизации. Крайне рекомендую её использовать, но если вы решаете обойтись без неё этот шаг можно пропустить.
    cd /var/www/certs_manager
    htpasswd -c .htpasswd username
    

    Подробнее о работе с авторизацией HTTP я писал тут

  4.  Конфигурируем Apache, опять таки рекомендую использовать HTTPS и аутентификацию. Конфиг располагается в файле /etc/httpd/conf/httpd.conf
    Для использования с HTTPS и авторизацией добавляем:

    # Для редиректа с HTTP
    <VirtualHost *:80>
            ServerName certs.my.domain
            Redirect / https://certs.my.domain
    </VirtualHost>
    # Конфиг самого хоста
    <VirtualHost *:443>
            ServerName certs.my.domain
            DocumentRoot /var/www/certs_manager
            SSLEngine on
            SSLCertificateFile /etc/ssl/certs/myssl.cer
            SSLCertificateKeyFile /etc/ssl/certs/myssl.key
            <Directory "/var/www/certs_manager">
                AuthType Basic
                AuthName "Certs"
                AuthUserFile /var/www/certs_manager/.htpasswd
                Require valid-user
                AllowOverride None
                Options None
                Order allow,deny
                Allow from all
            </Directory>
    </VirtualHost>
    

    Если будете использовать HTTP и без авторизации конфиг будет таким:

    <VirtualHost *:80>
            ServerName certs.my.domain
            DocumentRoot /var/www/certs_manager
    </VirtualHost>
    

    В конфигах нужно поменять имя домена на своё, так же изменить пути до сертификата и ключа для подписи страницы.

  5. Перезапускаем Apache и страница должна быть доступна по адресу сконфигурированного домена.
    # Для CentOs 6:
    service http restart
    
    # Для CentOs 7:
    systemctl restart httpd
    
0

Добавить комментарий

Ваш e-mail не будет опубликован.