Ads 468x60px

четверг, 8 ноября 2012 г.

Lighttp, https с самоподписным сертификатом.

Задача : защитить канал работы с панелью управления сайта. В данной ситуации достаточно самоподписанного сертификата, так как мы создаем защищенный канал для своих нужд.
Файлы сертификатов.
Файл ответов.
Данный файл создавать не обязательно - можно просто ответить на вопросы в командной строке, но мне так удобнее.
lighttp-openssl.cnf:
[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no

[ req_dn ]
# Двух значный код страны
C=RU

# Штат или область
#ST=

# Город
L=SPB

# Компания
O=TEST

# Подразделение внутри организации
OU=WEB server TEST

# Имя сервера (так же допускается *.example.com )
CN=TEST

# E-mail contact
emailAddress=postmaster@test.ru

[ cert_type ]
nsCertType = server
Ключ.
SSl - ключ, с помощью которого, будем создавать файлы сертификатов. Создаем его без пароля, иначе каждый раз запуская веб сервер нужно будет вводить этот пароль.
$ openssl genrsa -out test.key 2048 -config lighttp-openssl.cnf
,где 2048 - длина ключа ( также возможно значение 1024)
Файлы сертификатов.
CSR (Certificate Signing Request) - файл запроса для получения ssl сертификата:
$ openssl req -new -key test.key -out test.csr -config lighttp-openssl.cnf
CRT(Security Certificate) - файл сертификат безопасности. В примере срок действия 365 дней:
$ openssl x509 -req -days 365 -in test.csr -signkey test.key -out test.crt
Объединяем файл ключа и сертификата в один файл:
$ cat test.key test.crt > test.pem
В итоге в текущей директории у нас должно быть 5-ть файлов: lighttp-openssl.cnf, test.crt, test.csr, test.key, test.pem
Конфигурация lighttp.
В Debian wheezy достаточно выполнить команду:
$ sudo cp /etc/lighttpd/conf-available/10-ssl.conf /etc/lighttpd/conf-enabled/
В общем случае необходимо добавить в файл конфигурации следующие строки:
$SERVER["socket"] == "0.0.0.0:443" {
 ssl.engine  = "enable"
 ssl.pemfile = "/etc/lighttpd/server.pem"

 ssl.cipher-list = "ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM"
 ssl.honor-cipher-order = "enable"
}
Если https версия сайта отличается от основной, то так же можно указать путь к нужной директории:
$SERVER["socket"] == "0.0.0.0:443" {
. . .

server.document-root = "/home/user/www/https"
. . .
}
Копируем pem файл в директорию /etc/lighttpd и изменяем права доступа:
$ sudo cp test.pem /etc/lighttpd/
$ sudo chown www-data:www-data /etc/lighttpd/test.pem
$ sudo chmod 600 /etc/lighttpd/test.pem
Перезапуск веб сервера:
$ sudo service lighttpd restart
Подробнее.
Howto: Linux Lighttpd SSL

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