Когда-то на работе понадобилось поднять свой собственный центр сертификации для управления сертификатами для серверов и для клиентов VPN серверов и прочих сервисов.
Т.к. у нас использовался Django в качестве фреймворка для нашей системы управления компьютерами в сети, то я стал искать приложения к Django.
Едиственный нормально проработанный вариант это был django-pki
Это был проект Джанго с встроенным приложением центра сертификации.
Это была версия 1.2 и тогда не разрабатывали приложения отлельно от самого фреймворками.
Я сделал форк этого проекта и переписал проект с поддержкой Django1.8
Там появилось много удобного и в коде питона и в разметке в шаблонах.
Но вот сейчас опять, теперь уже на другой работе, пришлось создать свой центр сертификации. И я опять вернулся к этому проекту.
Дело в том что до сих пор я не нашел приложний к Django с таким функционалом. Все остальные приложения выглядят очень просто и мало функциональны.
В этот раз я переписал код под Django3 и оформил это в виде отдельного приложения, которое можно установить через pip и потом просто добавить его в INSTALLED_APPS в settings.py
И да! конечно код был переписан на python. Нужно отметить что теперь требования к коду намного более строгие чем тогда когда писались первые версии этого приложения. Это я про то что настроена проверка кода разными валидаторами кода типа flake8, black и isort.
Конечно код будет исполняться как бы он там не был написан, но читать и разбираться теперь значительно легче.
Нужно сказать что автор первоначальной версии проделал огромную работу и прописал много всего тогда когда архитекрура джанго не позволяло все упростить. Думаю, что многое можно упростить теперь , но до этого руки еще не дошли.
Теперь про само приложение.
Само приложение представляет собой обертку над библиотекой openssl.
В настройках приложения есть переменная :
PKI_OPENSSL_BIN = getattr(settings, "PKI_OPENSSL_BIN", "/usr/bin/openssl")
Здесь Вы можете указать путь к openssl в вашей системе.
Само приложение управляется через админку Django.
Когда вы нажимаете "Refresh Metadata" на странице приложения создается папка PKI в папке приложения, хотя Вы конечно можете указать и свой путь к папке сертификатов в вашей системе.
Основная конфигурация центра сертификации описана в шаблоне
/templates/pki/openssl.conf.in
На базе этого файла в папке PKI создается openssl.conf
Все сертификаты и корневые и для серверов и для клиентов будут находиться именно в папке PKI
Любые операции по изменению или удалению сделанные в веб интерфейсе будут актуализироваться тут же в папке PKI
В приложении реализовано логгирование всех действий с сертификатами и их можно посмотреть на странице приложения.
Будьте осторожней когда работаете непосредственно с файлами сертификатами. Если файл изменен или удален, приложение ничего об этом не узнает и данные в базе данных будут не актуальны.
Так же в этом приложении добавлена возможность формировать конфиг для клиентов ВПН серверов.
Шаблон для формирования таких конфигов лежит тут:
/pki/templates/ovpn.tpl
При формировании конфига в него будут добавлены сертификат клиента , ключ клиента и корневой сертификат центра.
Адреса ВПН сервером придется добавить в конфиг руками.
В первых версиях этого приложения была сделана связка со встроенными моделями пользователей. В каком-то смысле это удобно - можно получить все данные о пользователе.
Но сейчас возникли некоторые особенности с новых версиях Django.
Дело в том, что разные приложения теперь можно располагать в разных базах данных (для этого в новых версиях Django есть dbRouter). А вот связать модели из разных баз через конструкции ForeignKey уже не возможно..
Поэтому теперь в приложении в модели хранится только имя пользователя.
Искать такого пользователя придется вручную.
В общем пользуйтесь! и пишите замечания и предложения.
https://pypi.org/project/django3-pki/
https://github.com/yaricp/django3-pki
Т.к. у нас использовался Django в качестве фреймворка для нашей системы управления компьютерами в сети, то я стал искать приложения к Django.
Едиственный нормально проработанный вариант это был django-pki
Это был проект Джанго с встроенным приложением центра сертификации.
Это была версия 1.2 и тогда не разрабатывали приложения отлельно от самого фреймворками.
Я сделал форк этого проекта и переписал проект с поддержкой Django1.8
Там появилось много удобного и в коде питона и в разметке в шаблонах.
Но вот сейчас опять, теперь уже на другой работе, пришлось создать свой центр сертификации. И я опять вернулся к этому проекту.
Дело в том что до сих пор я не нашел приложний к Django с таким функционалом. Все остальные приложения выглядят очень просто и мало функциональны.
В этот раз я переписал код под Django3 и оформил это в виде отдельного приложения, которое можно установить через pip и потом просто добавить его в INSTALLED_APPS в settings.py
И да! конечно код был переписан на python. Нужно отметить что теперь требования к коду намного более строгие чем тогда когда писались первые версии этого приложения. Это я про то что настроена проверка кода разными валидаторами кода типа flake8, black и isort.
Конечно код будет исполняться как бы он там не был написан, но читать и разбираться теперь значительно легче.
Нужно сказать что автор первоначальной версии проделал огромную работу и прописал много всего тогда когда архитекрура джанго не позволяло все упростить. Думаю, что многое можно упростить теперь , но до этого руки еще не дошли.
Теперь про само приложение.
Само приложение представляет собой обертку над библиотекой openssl.
В настройках приложения есть переменная :
PKI_OPENSSL_BIN = getattr(settings, "PKI_OPENSSL_BIN", "/usr/bin/openssl")
Здесь Вы можете указать путь к openssl в вашей системе.
Само приложение управляется через админку Django.
Когда вы нажимаете "Refresh Metadata" на странице приложения создается папка PKI в папке приложения, хотя Вы конечно можете указать и свой путь к папке сертификатов в вашей системе.
Основная конфигурация центра сертификации описана в шаблоне
/templates/pki/openssl.conf.in
На базе этого файла в папке PKI создается openssl.conf
Все сертификаты и корневые и для серверов и для клиентов будут находиться именно в папке PKI
Любые операции по изменению или удалению сделанные в веб интерфейсе будут актуализироваться тут же в папке PKI
В приложении реализовано логгирование всех действий с сертификатами и их можно посмотреть на странице приложения.
Будьте осторожней когда работаете непосредственно с файлами сертификатами. Если файл изменен или удален, приложение ничего об этом не узнает и данные в базе данных будут не актуальны.
Так же в этом приложении добавлена возможность формировать конфиг для клиентов ВПН серверов.
Шаблон для формирования таких конфигов лежит тут:
/pki/templates/ovpn.tpl
При формировании конфига в него будут добавлены сертификат клиента , ключ клиента и корневой сертификат центра.
Адреса ВПН сервером придется добавить в конфиг руками.
В первых версиях этого приложения была сделана связка со встроенными моделями пользователей. В каком-то смысле это удобно - можно получить все данные о пользователе.
Но сейчас возникли некоторые особенности с новых версиях Django.
Дело в том, что разные приложения теперь можно располагать в разных базах данных (для этого в новых версиях Django есть dbRouter). А вот связать модели из разных баз через конструкции ForeignKey уже не возможно..
Поэтому теперь в приложении в модели хранится только имя пользователя.
Искать такого пользователя придется вручную.
В общем пользуйтесь! и пишите замечания и предложения.
https://pypi.org/project/django3-pki/
https://github.com/yaricp/django3-pki
Комментариев нет:
Отправить комментарий