Hello, TLSS is a small project aimed at the simplest possible work with certificates, the main goal of which is to simplify the deployment and control of certificates in the internal infrastructure, and ensure simple data portability.
tlss.mp4
IMPORTANT:
When upgrading from version 1.4.0 to 1.4.1 READ CHANGELOG.md add/recreate config.yaml (keys will already be there)
When upgrading from version 1.3.0 to 1.4.0 READ CHANGELOG.md, add/recreate config.yaml (keys will already be there)
- Everything is stored in small and fast SQLite
- All keys in the database are encrypted
- Your certificates are always at hand, wherever you are, just take the database file with you and you're good to go
- Create or add your ssh keys for connecting to servers
- Add your external CA certificates for signing server certificates and client certificates
- Controlled via WEB UI
- API
- Creation/revocation/automatic recreation of server certificates (regular and wildcard)
- Creation/revocation/automatic recreation of client certificates (regular and wildcard)
- Adding unique OID for more precise filtering
- Automatic certificate copying mechanism to server
- Creation of objects not linked to servers
- Control of recreation, validity
- CRL generation
- Reissuance of CA with recreation of all dependent objects (for core CA only)
- API for automation
- EST protocol support according to RFC 7030
- On the first application start, the console will ask 3 questions:
- login;
- password;
- salt.
-
After that, he first launch will create all necessary directories, generate a configuration file
config.yamland an SSH key will be generated for connecting to servers. -
The initial launch uses the default configuration and starts on an unsecured port, you need to make appropriate adjustments to your taste.
-
On the first login, you will land on the root/intermediate certificate generation page, without this step certificate creation will be impossible.
The login window greets you with two options, Login or Overview.
Without authorization, capabilities are limited to two sections:
- Home with Overview subsection - serves as statistics and general information
- Tools with Certificate Info subsection - allowing you to view certificate information, supporting selection through explorer or drop down.
Certificate generation is divided into two sections performing the same-name tasks:
- Servers certs
- Clients certs
The main differences between sections lie in additional capabilities and some certificate settings:
- Add ssh key subsection adds the ability to create your own ssh keys and use them to connect servers where generated certificates can be stored.
- Certificates are generated with TLS Web Server Authentication type
- Domain is automatically added to SAN section, even if it remains unfilled
- Creating server certificates makes it possible to save them on remote servers. For this, a server is added in the Add servers subsection, after which, when creating, you can set the "Save to server" switch.
- Add OIDs subsection adds the ability to create an additional custom field in the certificate
- Certificates are generated with TLS Web Client Authentication type
In both cases, setting the switch to "Recreate" will automatically recreate the certificate both locally and on the updated server if it was created with the Save on server switch.
Revoking a root or intermediate certificate triggers a chain reaction that leads to revocation of all certificates signed by this CA, and certificates that were already revoked will be deleted. Certificate save on server will be recreated.
Certificate revocation options differ by type:
Servers certs:
- When revoking a server certificate and subsequent rollback, the certificate does not overwrite the existing one if it was generated, that is, each certificate is unique and exists autonomously. Creation behavior is similar.
Clients certs:
- Similar to server certificates.
I cannot check everything, there may be more than one bug found, I apologize 🥺
Привет, TLSS это небольшой проект, направленный на максимально простую работу с сертфиикатами, основная цель которого упростить развертывание и контроль сертификатов во внутренней инфраструктуре, и обеспечить простую переносимость данных.
ВАЖНО:
При переходе с версии 1.3.0 на 1.4.0 добавьте в конфигурацию\пересоздайте (ключи уже будут там) следующие параметры:
Добавьте:
estCSRAttrs:
rfc9908: true # true - использовать RFC 9908, false - использовать RFC 7030 / use RFC 9908, false - use RFC 7030Внесите изменения в уже существующий пункт:
CAcrl:
subCACrlURL: https://tlss.lv.local:43000/api/v1/crl/subca/pem # CRL подписанный Sub CA, для конечных сертификатов / CRL signed by Sub CA, for end-entity certs
rootCACrlURL: https://tlss.lv.local:43000/api/v1/crl/rootca/pem # CRL подписанный Root CA, для Sub CA сертификатов / CRL signed by Root CA, for Sub CA certs
unit: hours # minutes, seconds, hours
updateInterval: 24 # interval of CRL update / интервал обновления CRLПодробности ниже:
Add: Добавлена поддержка протокола EST (RFC 7030) Согласно RFC 7030 поддерживаются следующие URIs:
Обязательные:
- Distribution of CA -/.well-known/est/cacerts/
- Enrollment of Clients - /.well-known/est/simpleenroll
- Re-enrollment of Clients - /.well-known/est/simplereenroll Опциональные:
- CSR Attributes - /.well-known/est/csrattrs (из-за разницы в структуре оригинальной RFC 7030 и дополнения в RFC 9908, в конфигурации добавлен пункт estCSRAttrs ) Требуется внести для нормальной работы приложения
estCSRAttrs:
rfc9908: true # true - использовать RFC 9908, false - использовать RFC 7030 / use RFC 9908, false - use RFC 7030Update: Добавлена конфигурация указывающая на эндпоинты для root ca \ sub ca для получения crl (согласно RFC 5280 каждый сертификат указывает CDP (CRL Distribution Point) на CRL своего издателя). Бандл так же сохраняется.
ВАЖНО:
Из-за того что я забыл добавить в конфигурацию ссылки на CDP для root ca\sub ca, а вместо них оставил ссылку на бандл, ваш текущий подписывающий сертификат будет без него, как следствие все выпущенные сертификаты при полной проверке например через openssl openssl verify -crl_check_all выдадут ошибку. К сожалению единственный путь, это перевыпустить sub ca после изменения в конфигурации.
Текущий валидный конфиг содержит следующие параметры для CDP:
CAcrl:
subCACrlURL: https://tlss.lv.local:43000/api/v1/crl/subca/pem # CRL подписанный Sub CA, для конечных сертификатов / CRL signed by Sub CA, for end-entity certs
rootCACrlURL: https://tlss.lv.local:43000/api/v1/crl/rootca/pem # CRL подписанный Root CA, для Sub CA сертификатов / CRL signed by Root CA, for Sub CA certs
unit: hours # minutes, seconds, hours
updateInterval: 24 # interval of CRL update / интервал обновления CRLFix: При создании нового Sub ca кеш не сбрасывался, что приводило к пересозданию сертификатов с подписью отозванного Sub ca
Fix: Не обновлялся CRL после пересоздания Sub ca (требовалось ждать, следующего обновления)
Fix: Обновления метки времени (next update) в crl
Fix: Фикс отображения серийного номера сертификата в Certificate Info, согласован с БД и отображением в openssl
Update: revoke\rollback сертификатов сразу обновляет CRL не дожидаясь глобального обновления.
Add: Добавлена информация в Certificate Info для отладки цепочек:
- Subject Key Identifier - для CA сертификатов это идентификатор их собственного ключа
- Authority Key Identifier - у конечных сертификатов и Sub CA указывает на ключ издателя (
SKIродителя)
- Все хранится в sqlite.
- Все ключи\пароли в базе зашифрованы.
- Бэкапы и перенос данных не проблема - просто скопируй файл с базой + конфигурация.
- Управляется через WEB UI.
- API.
- Создание\отзыв\автоматическое пересоздание серверных сертфиикатов (обычных и wildcard)
- Создание\отзыв\автоматическое пересоздание клиентских сертификатов (обычных и wildcard)
- Добавление уникального OID для более тонкой фильтрации
- Механизм автоматического копирования сертификатов на сервер
- Создание объектов не связаных с серверами
- Контроль пересоздания, валидности
- Генерация CRL
- Превыпуск CA с пересозданием всех заисимых объектов
- API для автоматизации
- Поддержка протокола EST RFC 7030
- Первый запуск создает все каталоги и генерирует конфиграционный файл
config.yaml, вероятно вам захочется отредактировать следующие поля:- hostname
- protocol
- authConfig
- После первой авторизации в UI, вы попадете на страницу генерации CA\SubCA, сгененируйте их или дальнейшее создание сертификатов будет невозможно
Я не в силах проверить все сразу, возможно найдется не один баг, прошу прощения 🥺
