Sign inSign up

alex89102/ca-web

By alex89102

Updated 3 months ago

веб-панель в Docker для внутреннего центра сертификации

Image
Security
Web servers
Monitoring & observability
0

646

alex89102/ca-web repository overview

🛡️ Web CA

Простая веб-панель для управления Центром сертификации (Root / Intermediate / Server Certificates)


🚀 Быстрый старт

mkdir -p /opt/ca/db
docker run -d \
  --name ca \
  -p 5000:5000 \
  -v /opt/ca/db:/app/ca \
  alex89102/ca-web:latest

⚡ При первом запуске:

  • создаётся структура /app/ca из шаблона
  • генерируется файл /app/ca/config.json
  • инициализируется audit.log
  • веб-панель доступна на http://localhost:5000

🧩 docker-compose пример

services:
  ca-web:
    image: alex89102/ca-web:latest
    container_name: ca
    restart: always
    ports:
      - "5000:5000"
    volumes:
      - /opt/ca:/app/ca
    env_file:
      - .env

Запуск:

docker compose up -d

📁 Структура каталога после запуска

  /ca/
     ├── certs/
     ├── crl/
     ├── newcerts/
     ├── private/
     ├── serial
     ├── index.txt
     ├── openssl.cnf
     ├── config.json      ← настройки DN и промежуточных CA
     └── audit.log        ← журнал действий пользователей

🔧 Пример конфигурации config.json

{
  "DEFAULT_DN": {
    "C": "RU",
    "ST": "",
    "L": "",
    "O": "",
    "OU": ""
  },
  "INTERMEDIATES": {
    "ICA1": {
      "CN": "Intermediate CA"
    }
  }
}

🧠 Основные возможности

  • ✅ Создание и управление Root CA и Intermediate CA
  • ✅ Выпуск, отзыв и просмотр сертификатов
  • ✅ Автоматическое создание config.json и audit.log
  • ✅ Сохранение всех данных в Volume /app/ca
  • ✅ Удобный веб-интерфейс Flask + Bootstrap
  • ✅ Настройка DN прямо через панель /settings/dn
  • ✅ Поддержка нескольких Intermediate CA
  • ✅ Тёмная и светлая темы интерфейса

🌐 Доступ

После запуска открой браузер:

http://<IP_сервера>:5000

или локально:

http://localhost:5000

🔐 Авторизация администратора

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

Пример .env:

CA_USERS=admin:admin

⚠️ Файл .env должен находиться в том же каталоге, что и docker-compose.yml.

  • Дополнительные замечания

    Можно указать несколько пользователей через запятую:

    CA_USERS=admin:admin,user1:pass123,user2:qwerty

    Если .env не указан, будет создана учётная запись admin:admin по умолчанию.

Переменная CA_USERS автоматически читается приложением при старте.

💡 Совет: Для безопасности рекомендуется задать сложные пароли и хранить .env вне публичного доступа (например, в /opt/ca/.env с правами 600).


🔄 Обновление контейнера

docker compose pull
docker compose up -d

Все данные (Root / Intermediate / Certificates / Logs / Config) сохраняются в ca

🧱 Сброс CA

Если нужно полностью переинициализировать CA:

docker compose down

rm -rf /opt/ca

docker compose up -d

🧰 Полезные команды

Просмотреть действующие сертификаты:

  docker exec -it ca ls /app/ca/certs

Посмотреть текущий config.json:

  docker exec -it ca cat /app/ca/config.json

Просмотреть журнал действий:

  docker exec -it ca tail -f /app/ca/audit.log

🧩 Информация

  • Базовый язык: Python 3.11
  • Фреймворк: Flask + Gunicorn
  • UI: Bootstrap, FontAwesome
  • Образ: alex89102/ca-web:latest
  • Порт контейнера: 5000
  • Порт на хосте: 5000 (по умолчанию)

Tag summary

Content type

Image

Digest

sha256:3501084c5

Size

53.1 MB

Last updated

3 months ago

docker pull alex89102/ca-web