Настройка lighttpd для поддержки https

()

Допустим, что есть сервер под управлением Ubuntu Server 9.10, на котором запущен lighttpd, обслуживающий один или несколько сайтов и в какой-то момент встала задача перевести один из обслуживаемых сайтов на работу по https. Далее будет показано как можно решить эту задачу.

Для начала создадим директорию, где будем хранить файлы ключей и сертификат, необходимые для корректной работы ssl-модуля lighttpd и перейдём в эту директорию:

mkdir -p /etc/lighttpd/keys && cd /etc/lighttpd/keys

Теперь сгенерируем файл приватного ключа:

openssl genrsa -out host.key 2048

Далее создадим запрос на подписку (CSR - Certificate Signing Request) нашего сертификата:

openssl req -new -nodes -key host.key -out host.csr

На запросы отвечаем в соответствии с имеющимися данными (то есть правду;)). Важно только чтобы в поле "Common Name" было имя вашего домена.

Далее используя CSR нужно получить SSL-сертификат в одном из центров сертификации или его официального представителя. Автор этих строк предпочитает покупать сертификаты вот тут. Разумеется можно подписать сертификат и самому, но тогда браузеры клиентов будут выдавать предупреждение безопасности, что скорее всего негативно скажется на отношении пользователей к ресурсу.

Получив сертификат сохраним его под именем "host.crt" в той же директории что и файл приватного ключа и запрос на подписку сертификата.

Следующим шагом создадим PEM-файл (X.509), который содержит в себе данные приватного ключа и сертификата нашего сервера:

cat host.key host.crt > host.pem

Подключим ssl-модуль для lighttpd:

lighty-enable-mod ssl

Приведём файл /etc/lighttpd/conf-enabled/10-ssl.conf к следующему виду:

$SERVER["socket"] == "0.0.0.0:443" {
                  ssl.engine                  = "enable"
                  ssl.pemfile                 = "/etc/lighttpd/keys/host.pem"
}

Далее нужно настроить переадресацию всех запросов с http на https, чтобы посетитель, попавший на сайт по старый ссылке, автоматически был переключен на защищённое соединение.

Допустим что SSL-сертификат выдан для домена "example.com". Создадим файл "/etc/lighttpd/conf-enabled/20-redirect-ssl.conf" следующего содержания:

$HTTP["host"] == "example.com" {
    $HTTP["scheme"] == "http" {
        url.redirect = ("^/(.*)" => "https://example.com/$1")
    }
}

И, наконец, снимаем комментарии (если это ещё не было сделано) в файле "/etc/lighttpd/lighttpd.conf" со строк, разрешающих использование модулей rewrite и redirect. После этого остаётся только перезапустить веб-сервер:

invoke-rc.d lighttpd restart

На этом всё. Приятной работы!

Ключевые слова: lighttpd, ssl.

Комментарии:

morbo 2010-03-28 17:56:14 (#)

Полезно. Добавляем в закладки :)

Anonymous 2010-03-28 18:06:10 (#)

перестал пользоваться услугами корректора? ;-) в первом предложении перед "что" должна быть запятая; предложение сложное, следовательно перед и нужна запятая; и "наконец" тоже отделяется запятыми :-)

MooSE 2010-03-28 18:09:52 (#)

Да, Сань, перестал. Жизнь поменялась. :)

Ошибки поправил. Спасибо.
Новый комментарий



© 2006-2016 Вадим Калинников aka MooSE