воскресенье, 6 марта 2016 г.

lighttpd защита авторизации с помощью ssl

0. Будем считать, что lighttpd установлен.

1. Включим поддержку ssl в lighttpd:
lighttpd-enable-mod ssl
и поддержку переадресации:
nano /etc/lighttpd/lighttpd.conf
раскомментируем строку:
"mod_rewrite",
и перезагрузим lighttpd:
service lighttpd restart
будет ошибка, но можно смело продолжать далее

2. Создадим каталог для сертификатов, и перейдем в него:
mkdir /etc/lighttpd/certs
cd /etc/lighttpd/certs

3. Создаем сертификат:
openssl req -new -x509 -keyout lighttpd.pem -out lighttpd.pem -days 3650 -nodes
заполняем или нет предлагаемые данные

4. Назначим владельца сертификата, и выставим права:
chown www-data:www-data lighttpd.pem
chmod 400 lighttpd.pem

5. Укажем вэб-серверу местонахождение сертификата:
nano /etc/lighttpd/conf-enabled/10-ssl.conf

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

6. Настроим принудительную переадресацию на https:
nano /etc/lighttpd/conf-enabled/20-redirect-ssl.conf

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

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

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

Здесь задача перечислить все возможные адреса при обращении к которым требуется обращение по https.

7. Перезагрузим lighttpd:
service lighttpd restart
и попробуем открыть страницу сайта.