Данное руководство показывает, как сгенерировать CSR на lighttpd с помощью командной строки OpenSSL на том же сервере, на котором работает веб-сервер lighttpd. Вы создадите два файла одной командой: новый приватный ключ и соответствующий ему CSR (запрос на подпись сертификата), который вы отправите в свой Удостоверяющий центр.
Приведённые ниже шаги работают в каждом современном дистрибутиве Linux, включающем пакет lighttpd (Debian, Ubuntu, RHEL, AlmaLinux, Rocky Linux, Fedora, openSUSE, Alpine), поскольку каждый из них поставляется с OpenSSL 1.1.1 или OpenSSL 3.x. Обе версии по умолчанию подписывают запрос с помощью SHA-256, поэтому добавлять флаг дайджеста не требуется. Та же команда работает и на FreeBSD, и на macOS с lighttpd.
Шаг 1: Подключитесь к вашему серверу lighttpd
Откройте Terminal на macOS или Linux, либо PowerShell или Windows Terminal на Windows, и подключитесь к серверу по SSH. Замените имя пользователя и хост на свои:
ssh your-user@your-lighttpd-server
Сгенерируйте CSR на том же сервере, где будет размещён сертификат. Приватный ключ создаётся рядом с CSR и должен оставаться на этом сервере, поэтому выполнение команды на вашем ноутбуке с последующим переносом ключа сводит на нет весь смысл. Также желательно выполнять работу в отдельном каталоге, который вы сможете позже легко найти, например:
sudo mkdir -p /etc/lighttpd/ssl
cd /etc/lighttpd/ssl
Шаг 2: Сгенерируйте приватный ключ и CSR
Если вы уже сгенерировали свой CSR с помощью другого инструмента, перейдите сразу к установке сертификата на lighttpd.
Выполните следующую команду OpenSSL. Она создаёт 2048-битный RSA-ключ и CSR за один шаг, при этом субъект и Subject Alternative Names (SAN) указываются прямо в команде, чтобы OpenSSL не останавливался с вопросами:
openssl req -new -newkey rsa:2048 -nodes
-keyout yourdomain.key
-out yourdomain.csr
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com"
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"
Что делает каждая часть:
- -newkey rsa:2048 генерирует новый 2048-битный RSA-ключ. 2048 бит — это текущий минимум для публичных сертификатов; вы можете использовать rsa:4096 для более длинного ключа или перейти на ECDSA (см. ниже).
- -nodes оставляет приватный ключ незашифрованным, чтобы lighttpd мог читать его при запуске без запроса парольной фразы.
- -keyout и -out задают имена файлов приватного ключа и CSR.
- -subj указывает субъект сертификата. Введите здесь реальное название компании, штат и город, а не значения-заполнители. CN (Common Name) — это ваш основной домен.
- -addext «subjectAltName=…» перечисляет все имена хостов, которые должен покрывать сертификат. Публичные Удостоверяющие центры проверяют именно список SAN, поэтому включите туда и Common Name.
Замените yourdomain.com на ваш реальный домен везде, где он встречается. Чтобы охватить дополнительные имена хостов, добавьте их в список SAN через запятую, например DNS:api.yourdomain.com. Для wildcard-сертификата укажите и wildcard, и обычный домен: DNS:*.yourdomain.com,DNS:yourdomain.com. Используйте в полях субъекта только буквенно-цифровые символы, а для поля C — официальный двухбуквенный код страны.
Если вы предпочитаете ключ ECDSA (меньше по размеру и быстрее, с широко поддерживаемой кривой P-256), сгенерируйте ключ и CSR так:
openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -nodes
-keyout yourdomain.key
-out yourdomain.csr
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com"
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"
lighttpd поддерживает как RSA, так и ECDSA сертификаты через mod_openssl, и вы можете обслуживать оба типа на одном сокете, указав две пары директив ssl.pemfile и ssl.privkey.
Если вы предпочитаете отвечать на вопросы по одному полю за раз, выполните openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr без -subj и без -addext. OpenSSL будет запрашивать каждое поле по очереди. При этом:
- Country Name (C): двухбуквенный код ISO вашей страны, например US или GB. Для сертификатов с проверкой организации (Business Validation) или расширенной проверкой (Extended Validation) это должна быть официальная страна регистрации вашей организации.
- State or Province Name (ST): полное название, например Tennessee. Не сокращайте.
- Locality Name (L): город или населённый пункт, например Nashville.
- Organization Name (O): официальное зарегистрированное название вашей компании, например Your Company LLC. Для сертификатов с проверкой домена (Domain Validation) можно указать NA.
- Organizational Unit Name (OU): это поле устарело и игнорируется публичными Удостоверяющими центрами. Оставьте его пустым, нажав Enter.
- Common Name (CN): полное доменное имя (FQDN), для которого предназначен сертификат, например www.yourdomain.com. Для wildcard-сертификата используйте *.yourdomain.com.
- Email Address: необязательное поле, не используется публичными Удостоверяющими центрами. Можно оставить пустым.
- A challenge password и An optional company name: оба поля устарели и игнорируются публичными Удостоверяющими центрами. Оставьте их пустыми.
Без флага -addext итоговый CSR не будет содержать записей SAN. Публичные Удостоверяющие центры проверяют именно список SAN и отклонят (либо молча переопределят) запрос без него, поэтому рекомендуемый путь — использовать приведённую выше команду с встроенными -subj и -addext.
Шаг 3: Найдите ваши файлы
Выведите список файлов текущего каталога, чтобы убедиться, что оба файла созданы:
ls
Вы должны увидеть два новых файла:
- yourdomain.key: ваш приватный ключ. Храните его на сервере, делайте надёжную резервную копию и никогда никому не передавайте, включая Удостоверяющий центр. Тот, кто владеет ключом, может выдавать себя за ваш сайт.
- yourdomain.csr: ваш запрос на подпись сертификата. Это файл, который вы отправляете поставщику SSL.
Ограничьте доступ к приватному ключу так, чтобы читать его мог только владелец файла:
chmod 600 yourdomain.key
Шаг 4: Проверьте CSR (необязательно, но рекомендуется)
Прежде чем отправлять запрос, проверьте, что CSR содержит правильный субъект и SAN и что его подпись корректна. Следующая команда расшифровывает запрос локально с помощью OpenSSL:
openssl req -noout -text -verify -in yourdomain.csr
Убедитесь, что строка Subject отображает ваши данные, что X509v3 Subject Alternative Name перечисляет все ожидаемые имена хостов, и что проверка подписи выводит verify OK. Алгоритм подписи должен отображаться как sha256WithRSAEncryption (или ecdsa-with-SHA256 для ключа ECDSA). Если вы предпочитаете не использовать командную строку, вставьте CSR в наш онлайн-инструмент CSR Decoder, чтобы прочитать те же поля в браузере.
Шаг 5: Отправьте ваш CSR
Чтобы скопировать CSR для вашего заказа, выведите его содержимое:
cat yourdomain.csr
Вы увидите блок текста, похожий на этот:
-----BEGIN CERTIFICATE REQUEST-----
MIICyzCCAbMCAQAwTDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQsw...
...(много других строк символов base64)...
-----END CERTIFICATE REQUEST-----
Скопируйте весь блок целиком, включая строки ——BEGIN CERTIFICATE REQUEST—— и ——END CERTIFICATE REQUEST—— (у каждого маркера по пять дефисов с обеих сторон). Весь этот блок и есть ваш CSR. Вставьте его в форму заказа при покупке и сохраните соответствующий приватный ключ на сервере.
Если вы предпочитаете не использовать командную строку, вы также можете создать запрос с помощью нашего онлайн-инструмента CSR Generator. Обратите внимание, что он генерирует приватный ключ прямо в вашем браузере, поэтому обязательно сохраните этот ключ самостоятельно и перенесите его на сервер.
После того как ваш Удостоверяющий центр проверит запрос, вы получите свой сертификат. В зависимости от уровня проверки это займёт от нескольких минут для проверки домена (Domain Validation) до нескольких рабочих дней для проверки организации (Business Validation) и расширенной проверки (Extended Validation).
Шаг 6: Установите сертификат на lighttpd
Когда сертификат придёт, разместите выданный сертификат и его цепочку промежуточных сертификатов на сервере рядом с приватным ключом, а затем укажите на них lighttpd в блоке сокета TLS. В текущих версиях lighttpd поддержка TLS реализована в mod_openssl, и рекомендуемый формат (с момента появления директивы ssl.privkey в lighttpd 1.4.53) хранит сертификат вместе с цепочкой в одном файле, а приватный ключ — в отдельном файле:
server.modules += ( "mod_openssl" )
$SERVER["socket"] == ":443" {
ssl.engine = "enable"
ssl.pemfile = "/etc/lighttpd/ssl/yourdomain.fullchain.pem"
ssl.privkey = "/etc/lighttpd/ssl/yourdomain.key"
}
Файл ssl.pemfile должен содержать ваш сертификат, за которым следуют промежуточные сертификаты (создайте его командой cat yourdomain.crt yourdomain.ca-bundle > yourdomain.fullchain.pem). Устаревший формат с единым файлом, объединяющим сертификат и приватный ключ в одном ssl.pemfile, по-прежнему работает в старых сборках, но формат с раздельными файлами соответствует тому, как Удостоверяющие центры предоставляют файлы, и является официально задокументированной рекомендацией. Проверьте конфигурацию командой sudo lighttpd -t -f /etc/lighttpd/lighttpd.conf и перезапустите lighttpd, чтобы применить изменения. Полный рабочий процесс описан в нашем руководстве как установить SSL-сертификат на lighttpd.
Сэкономьте 10% на SSL-сертификатах при заказе сегодня!
Быстрая выдача, надежное шифрование, 99,99% доверия к браузеру, специализированная поддержка и 25-дневная гарантия возврата денег. Код купона: SAVE10


