bg-tutorials

Как сгенерировать CSR на lighttpd

Данное руководство показывает, как сгенерировать 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

Детальное изображение дракона в полете
Написано

Опытный автор контента, специализирующийся на SSL-сертификатах. Превращает сложные темы кибербезопасности в понятный, увлекательный контент. Вносите свой вклад в повышение уровня цифровой безопасности с помощью впечатляющих рассказов.

Avatar of Sergiu Rosca
Technical Review by Sergiu Rosca

Sergiu Rosca is the core web developer behind SSL Dragon. He manages the technical infrastructure, platform performance, and backend integrations that keep the site running smoothly and securely. At SSL Dragon, Sergiu shares practical insights on web development, site optimization, and technical troubleshooting.

All SSL Dragon installation guides are tested on live server environments and undergo a strict peer-review process to ensure your infrastructure remains secure. Read our full Editorial Policy.