CertGen — это простой Python-скрипт для генерации собственного корневого центра сертификации (CA) и выпуска подписанных им сертификатов для веб-серверов, RDP, VPN и других сервисов. Все параметры задаются в YAML-конфиге.
- Генерация корневого CA (ca.key, ca.crt)
- Генерация сертификатов с поддержкой Subject Alternative Name (SAN: DNS и IP)
- Экспорт сертификатов только в формате PFX (.pfx) с единым паролем
- Простая настройка через config.yaml
- Повторное использование CA для выпуска новых сертификатов
- Минимальный вывод, только результат
- Клонируйте репозиторий или скачайте файлы в папку:
git clone https://github.com/andrei-s96s/certgen.git cd certgen - Установите зависимости:
pip install -r requirements.txt
ca:
common_name: "My Root CA"
country: "RU"
organization: "MyOrg"
validity_days: 3650
pfx_password: "vpnpass"
certs:
- common_name: "vpn.example.com"
san_dns: ["vpn.example.com", "vpn2.example.com"]
san_ip: ["192.168.1.10", "10.0.0.5"]
validity_days: 825
- common_name: "rdp.example.com"
san_dns: ["rdp.example.com"]
san_ip: []
validity_days: 825- ca — параметры корневого центра сертификации (CA)
- certs — список сертификатов для генерации
- san_dns — дополнительные DNS-имена (SAN)
- san_ip — дополнительные IP-адреса (SAN)
- pfx_password — общий пароль для всех .pfx-файлов
- Отредактируйте
config.yamlпод свои задачи. - Запустите генератор:
python certgen.py
- В папке появятся:
ca.key,ca.crt— корневой сертификат и ключ (используйте для доверия)*.pfx— сертификаты для сервисов (импортируйте в Windows, IIS, RDP и т.д.)
- Откройте
ca.crtдвойным кликом. - Нажмите "Установить сертификат".
- Выберите "Локальный компьютер" → "Доверенные корневые центры сертификации".
- Завершите мастер установки.
- Откройте .pfx двойным кликом или через оснастку MMC → Сертификаты.
- Введите пароль из
config.yaml(pfx_password). - Следуйте инструкциям мастера.
openssl pkcs12 -in имя.pfx -clcerts -nokeys -out имя.crt
openssl pkcs12 -in имя.pfx -nocerts -nodes -out имя.keyQ: Как добавить новый сертификат? A: Просто добавьте новую секцию в certs в config.yaml и перезапустите скрипт. CA не пересоздастся, а подпишет новый сертификат.
Q: Как пересоздать CA? A: Удалите ca.key и ca.crt из папки, затем запустите скрипт — будет создан новый CA.
Q: Почему браузер/клиент не доверяет сертификату? A: Установите ca.crt в доверенные корневые сертификаты на клиенте.
Q: Можно ли добавить email или другие поля в SAN? A: Да, скрипт легко дорабатывается для поддержки email. Обратитесь к автору или посмотрите документацию cryptography.