Простой веб-интерфейс для генерации SSL-сертификатов Let's Encrypt с использованием HTTP-01 проверки.
- Выпуск сертификатов Let's Encrypt через веб-интерфейс
- Поддержка нескольких доменов (SAN-сертификаты)
- Поддержка тестового (staging) и производственного серверов Let's Encrypt
- Автоматическое решение HTTP-01 challenge
- Сохранение сертификатов в формате, совместимом с Nginx и Apache
- PHP 7.2 или выше
- Модули PHP: OpenSSL, cURL, JSON
- Доступ на запись к директории веб-сервера (для размещения файлов проверки)
- Доступ на запись к директории приложения (для сохранения сертификатов)
- Клонируйте репозиторий:
git clone https://github.com/tereshin/php-letsencrypt-generator.git
cd php-letsencrypt-generator
- Установите зависимости через Composer:
composer install
- Убедитесь, что директории
storage/keys
иcerts
доступны для записи:
mkdir -p storage/keys certs
chmod 700 storage/keys certs
- Настройте веб-сервер для доступа к приложению (Apache, Nginx и т.д.)
-
Откройте приложение в браузере
-
Заполните форму:
- Домены: Укажите один или несколько доменов через запятую (например,
example.com, www.example.com
) - Email: Укажите ваш email для регистрации в Let's Encrypt
- Путь к корню сайта: Укажите полный путь к корню веб-сервера, где будут размещены файлы проверки
- Домены: Укажите один или несколько доменов через запятую (например,
-
Нажмите "Выпустить сертификат"
-
Дождитесь завершения процесса
-
Скачайте сгенерированные файлы сертификатов
После успешного выпуска сертификата в директории certs/[domain]
будут созданы следующие файлы:
privkey.pem
- Приватный ключcert.pem
- Сертификат доменаchain.pem
- Цепочка сертификатов CAfullchain.pem
- Полная цепочка (сертификат + цепочка CA)
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
# Дополнительные настройки SSL
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
# Остальные настройки сервера
# ...
}
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
SSLEngine on
SSLCertificateFile /path/to/cert.pem
SSLCertificateKeyFile /path/to/privkey.pem
SSLCertificateChainFile /path/to/chain.pem
# Остальные настройки виртуального хоста
# ...
</VirtualHost>
Сертификаты Let's Encrypt действительны в течение 90 дней. Для автоматического обновления рекомендуется настроить задачу cron.
- Не размещайте этот инструмент в публичном доступе без дополнительной защиты (например, HTTP-аутентификация)
- Убедитесь, что директории
storage/keys
иcerts
не доступны через веб - Ограничьте права доступа к файлам сертификатов