README.md

    Docker-контейнер для организации NGINX CDP кэша

    P.S. Пока проект находится в стадии “быстро, грязно, но работает”. И ещё далеко до полноценного “решения” или волшебной кнопки. Не судите строго. Рассматривайте как Proof Of Concept.

    Используется для ускорения доступа к файлам CRL, за счёт кэширования ответов CDP в памяти компьютера. Что ускоряет проверку отзыва у КриптоПро CSP. А в некоторых случаях, может решить странные проблемы при доступе к CDP. Из-за чего например, может отвалиться проверка отзыва на КриптоПро CSP версии 5.0.11455.0 (На Linux).

    Можно так же использовать для снижения нагрузки на интернет. Из-за скачивания списков, если канал медленный, а компьютеров в локальной сети несколько…

    На данный момент, подразумевается установка непосредственно на рабочую станцию на базе GNU/Linux. Но можно адаптировать до сетевой службы, доступной в локальной сети предприятия.

    Зависимости

    Необходимо установить пакеты git (чтобы склонировать этот репозиторий), make (Makefile) и podman (Container Runtime)

    • Astra Linux

      sudo apt update
      sudo apt install --no-install-recommends -y git make podman
      
    • Alt Linux

      Способ повышения прав по умолчанию

      su -
      # Выполняется уже в shell от имени root
      apt-get update
      apt-get install -y git make podman
      

      Если настроен sudo

      sudo apt-get update
      sudo apt-get install -y git make podman
      
    • РЭД ОС или РОСА

      sudo dnf --refresh install -y git make podman
      

    Попробовать без установки

    Склонировать репозиторий

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

    Выполните команду

    git clone https://gitflic.ru/project/ebudget-community/nginx-cdp-cache_docker.git && cd nginx-cdp-cache_docker
    

    Запуск в тестовом режиме

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

    # Без прав администратора нельзя забиндить 80-ый порт. Потому пока нужно выполнять это с sudo.
    # Смотри: https://gitflic.ru/project/ebudget-community/nginx-cdp-cache_docker/issue/2
    sudo make run
    

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

    # Модификация /etc/hosts невозможна без прав администратора
    sudo make install-hosts
    

    Далее, можете либо перейти на несколько разных ГОСТ-сайтов, желательно тех, что требуют входа по сертификату. Со второй попытки, “зависание” на проверке отзыва будет значительно меньше.

    Либо воспользоваться curl чтобы убедиться, что кэш работает (на примере этого списка и этого):

    curl -vf -o - http://crl.roskazna.ru http://crl.gosuglugi.ru http://reestr-pki.ru
    # На всех трёх увидите строку `Nginx cache is working!`
    
    curl -vf -o /dev/null http://crl.roskazna.ru/crl/ucfk_2023.crl http://reestr-pki.ru/cdp/guc2022.crl
    # Заголовок X-Cache-Status будет содержать `MISS`. Т.к. мы скачиваем их впервые.
    
    curl -vf -o /dev/null http://crl.roskazna.ru/crl/ucfk_2023.crl http://reestr-pki.ru/cdp/guc2022.crl
    # Заголовок X-Cache-Status будет содержать `HIT`. И загрузка произойдёт моментально.
    

    Так же можно проверить встроенными средствами КриптоПро. После разогрева кэша.

    # Добавление бинарных файлов КриптоПро CSP в PATH
    export PATH="${PATH}:/opt/cprocsp/bin/amd64:/opt/cprocsp/sbin/amd64"
    
    # Удаление загруженных сертификатов с AIA из кэша
    certmgr -delete -store uCache -all
    
    # Удаление кэшированных списков отзыва
    certmgr -delete -store uCache -crl -all
    
    # Удаление списков, сохранённых оффлайн вручную
    certmgr -delete -crl -all
    
    # Запуск csptest с попыткой отобразить `sobi.login.roskazna.ru` и подробным выводом операций по проверке цепочки и отзыва.
    CP_PRINT_CHAIN_DETAIL=1 csptest -tlsc -server sobi.login.roskazna.ru -nosave -verbose
    
    # Сравнить скорость с проверкой без работающего кэша...
    

    После проверки, чтобы закрыть программу и откатить изменения.

    sudo make uninstall-hosts
    # Если make run выполняется через sudo, то и make clean нужно тоже, т.к. будет использоваться rootful хранилище для установки
    sudo make clean
    

    Установка на постоянной основе

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

    Установить службу на компьютер

    sudo make install
    

    Удалить службу с компьютера

    sudo make uninstall
    
    Описание

    NGINX-контейнер, настроенный работать кэшем для CDP

    Конвейеры
    0 успешных
    0 с ошибкой