bg-tutorials

Как установить SSL-сертификат на lighttpd

В этом руководстве вы узнаете, как установить SSL-сертификат на Lighttpd. Руководство охватывает текущую конфигурацию (отдельные файлы сертификата и приватного ключа с использованием модуля mod_openssl), устаревший метод с объединённым PEM-файлом для старых сборок, а также быструю проверку конфигурации перед перезапуском.

Мы также записали видео, которое проведёт вас через весь процесс. Если вы предпочитаете текстовую версию, продолжайте читать ниже.

Создание CSR-кода на Lighttpd

Начнём с создания CSR (Certificate Signing Request). CSR — это блок закодированного текста, который вы отправляете в удостоверяющий центр для подачи заявки на SSL-сертификат. У вас есть два варианта:

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

Установка SSL-сертификата на Lighttpd

Шаг 1: Подготовьте файлы сертификата

После проверки удостоверяющий центр отправит вам файлы сертификата по электронной почте. Скачайте архив и распакуйте его. У вас должны быть:

  • yourdomain.crt — ваш основной SSL-сертификат.
  • yourdomain.ca-bundle — промежуточные сертификаты (CA-бандл).
  • yourdomain.key — приватный ключ, который вы создали вместе с CSR.

Lighttpd рекомендует, чтобы файл, указанный в ssl.pemfile, содержал полную цепочку сертификатов: сначала ваш сертификат, а затем промежуточные сертификаты. Создайте этот объединённый файл цепочки, а затем переместите его и приватный ключ в каталог, доступный для чтения Lighttpd (например, /etc/lighttpd/ssl/):

cat yourdomain.crt yourdomain.ca-bundle > yourdomain.fullchain.pem
sudo mkdir -p /etc/lighttpd/ssl
sudo cp yourdomain.fullchain.pem yourdomain.key /etc/lighttpd/ssl/

Ограничьте доступ к приватному ключу так, чтобы читать его мог только root:

sudo chmod 600 /etc/lighttpd/ssl/yourdomain.key

Шаг 2: Включите mod_openssl

Начиная с версии 1.4.56, поддержка TLS в Lighttpd находится в загружаемом модуле под названием mod_openssl (также существуют другие бэкенды, такие как mod_mbedtls, mod_wolfssl, mod_gnutls и mod_nss). Загрузите его в основном файле конфигурации перед блоком SSL-сокета:

server.modules += ( "mod_openssl" )

Примечание: в Lighttpd 1.4.55 и более ранних версиях поддержка TLS была встроена, а не загружалась как модуль, поэтому на таких сборках эту строку можно пропустить. Проверьте версию с помощью lighttpd -v.

Шаг 3: Отредактируйте lighttpd.conf

Откройте основной файл конфигурации (путь обычно /etc/lighttpd/lighttpd.conf) в предпочитаемом редакторе:

sudo nano /etc/lighttpd/lighttpd.conf

Добавьте блок сокета для порта 443. В текущей версии Lighttpd (1.4.56+) храните цепочку сертификатов и приватный ключ в отдельных файлах: укажите в ssl.pemfile путь к файлу полной цепочки, а в ssl.privkey — путь к ключу. Именно в таком формате большинство удостоверяющих центров предоставляют файлы, и это конфигурация, рекомендованная Lighttpd.

$SERVER["socket"] == ":443" {
    ssl.engine  = "enable"
    ssl.pemfile = "/etc/lighttpd/ssl/yourdomain.fullchain.pem"
    ssl.privkey = "/etc/lighttpd/ssl/yourdomain.key"

    # Minimum TLS version (ssl-conf-cmd needs lighttpd 1.4.48+; TLS 1.2 is already the default on 1.4.56+)
    ssl.openssl.ssl-conf-cmd = ( "MinProtocol" => "TLSv1.2" )
}
  • ssl.engine включает TLS для этого сокета.
  • ssl.pemfile содержит ваш сертификат, за которым следует промежуточная цепочка.
  • ssl.privkey содержит приватный ключ. Начиная с версии 1.4.53, он обязателен, если ключ не находится внутри pemfile.

Чтобы перенаправлять обычный HTTP на HTTPS и гарантировать, что посетители всегда попадают на защищённую версию сайта, добавьте перенаправление для порта 80 (для этого требуется mod_redirect, который по умолчанию загружен в большинстве дистрибутивов):

$SERVER["socket"] == ":80" {
    url.redirect = ( "^/(.*)" => "https://yourdomain.com/$1" )
}

Сохраните и закройте файл.

Устаревший метод: объединённый PEM и ssl.ca-file

В более старых сборках Lighttpd 1.4.x (до версии 1.4.53) использовался единый объединённый PEM-файл, содержащий вместе и сертификат, и приватный ключ, а промежуточная цепочка предоставлялась отдельно через ssl.ca-file. Если вы поддерживаете одну из таких старых систем, создайте объединённый файл следующим образом:

cat yourdomain.crt yourdomain.key > /etc/lighttpd/ssl/yourdomain.pem

Затем укажите его в блоке сокета:

$SERVER["socket"] == ":443" {
    ssl.engine  = "enable"
    ssl.pemfile = "/etc/lighttpd/ssl/yourdomain.pem"
    ssl.ca-file = "/etc/lighttpd/ssl/yourdomain.ca-bundle"
}

В текущей версии Lighttpd предпочтительнее использовать отдельные ssl.pemfile и ssl.privkey, как описано в шаге 3, и хранить полную цепочку в pemfile. Директива ssl.ca-file была переименована в ssl.verifyclient.ca-file в версии 1.4.60, поскольку её реальное назначение — проверка клиентских сертификатов, а не предоставление цепочки сервера.

Шаг 4: Проверьте конфигурацию

Всегда проверяйте синтаксис перед перезапуском, так как ошибка может помешать серверу запуститься. Выполните:

sudo lighttpd -t -f /etc/lighttpd/lighttpd.conf

Вы должны увидеть сообщение о том, что синтаксис корректен. Для более глубокой проверки, которая также загружает и инициализирует модули, используйте sudo lighttpd -tt -f /etc/lighttpd/lighttpd.conf. Исправьте все обнаруженные ошибки, прежде чем продолжить.

Шаг 5: Перезапустите Lighttpd

Примените изменения. На современной системе с systemd перезапустите службу:

sudo systemctl restart lighttpd

На старых системах, использующих SysV init, воспользуйтесь скриптом инициализации:

sudo /etc/init.d/lighttpd restart

Поздравляем, ваш SSL-сертификат теперь установлен на Lighttpd. Чтобы подтвердить результат и получить мгновенный отчёт о статусе, используйте наш SSL Checker или ознакомьтесь с нашим полным набором SSL-инструментов. Для получения дополнительных сведений см. официальную документацию Lighttpd по SSL.

Часто задаваемые вопросы

Использует ли Lighttpd объединённый PEM-файл или отдельные файлы сертификата и ключа?

Текущая версия Lighttpd (1.4.56 и более поздние) рекомендует использовать отдельные файлы: сертификат вместе с промежуточной цепочкой в файле, указанном в ssl.pemfile, и приватный ключ в ssl.privkey. Старый объединённый PEM, в котором сертификат и ключ были соединены в один ssl.pemfile, по-прежнему работает, но раздельный формат соответствует тому, как большинство удостоверяющих центров предоставляют файлы, и является рекомендацией из документации.

Нужен ли мне по-прежнему ssl.ca-file для промежуточной цепочки?

Нет. Текущая рекомендация — включать промежуточные сертификаты непосредственно в файл ssl.pemfile, сразу после вашего сертификата. Директива ssl.ca-file была историческим способом завершить цепочку, когда pemfile содержал только конечный сертификат, а в версии 1.4.60 она была переименована в ssl.verifyclient.ca-file, поскольку её реальная роль — проверка клиентских сертификатов.

Как проверить конфигурацию перед перезапуском Lighttpd?

Выполните sudo lighttpd -t -f /etc/lighttpd/lighttpd.conf, чтобы проверить синтаксис, или sudo lighttpd -tt -f /etc/lighttpd/lighttpd.conf для более глубокой проверки, которая также загружает модули. Исправьте все обнаруженные ошибки перед перезапуском, чтобы опечатка не помешала серверу запуститься.

Почему браузер показывает неполную цепочку сертификатов на Lighttpd?

Обычно это означает, что в вашем ssl.pemfile отсутствуют промежуточные сертификаты. Объедините ваш сертификат и CA-бандл в один файл, разместив сертификат первым, и укажите этот файл в ssl.pemfile. Затем проверьте конфигурацию и перезапустите сервер. Убедиться, что цепочка полная, можно с помощью нашего SSL Checker.

Как проверить, что SSL-сертификат установлен на Lighttpd?

Подключитесь к вашему сайту с помощью OpenSSL и прочитайте предоставляемый сертификат:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -dates
Если сертификат установлен, эта команда выведет его издателя и сроки действия. Вы также можете открыть сайт в браузере и проверить значок замка.

Сэкономьте 10% на SSL-сертификатах при заказе сегодня!

Быстрая выдача, надежное шифрование, 99,99% доверия к браузеру, специализированная поддержка и 25-дневная гарантия возврата денег. Код купона: SAVE10

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

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