апреля 11 2011 12:41 пп

Настройка виртуальных хостов с поддержкой SSL в nginx

Мне понадобился виртуальных хост с поддержкой SSL для одного из сайтов, который работает на Nginx. В этой заметке вкратце описано как настроить mod_ssl для nginx. По умолчанию модуль не собирается, нужно разрешить его сборку при конфигурировании параметром --with-http_ssl_module. Если вы ставили из пакета то возможно у вас mod_ssl есть.

Приступим к настройке виртуального хоста, можно настроить его как в отдельном файле, так и в основном конфиге, смотря как вам удобно.

Ниже пример виртуального хоста с поддрежкой SSL.

Код:

server {
listen 443;

#Опции SSL
ssl    on;
ssl_protocols          SSLv2 SSLv3 TLSv1;
ssl_prefer_server_ciphers on;
ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_certificate        /etc/nginx/conf/cert/server.crt;
ssl_certificate_key    /etc/nginx/conf/cert/private.key;
ssl_session_cache      shared:SSL:10m;
ssl_session_timeout    10m;

server_name  site.ru www.site.ru;

location / {
root   /var/www/site;
index index.php;
}
error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   html;
}

#Обработка PHP через fast-cgi

location ~ \.php$ {
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  /var/www/site$fastcgi_script_name;
include        fastcgi_params;
}
access_log  logs/site.access.log;
error_log logs/site.error.log;
}

Если у вас не самоподписанный сертификат, то скорее всего у вас есть еще intermediate.pem, который вы скачали с сайта, где делали ваш сертификат.  Для работы с nginx просто скопируйте его в файл своего сертификата

Код:

cat intermediate.pem >> server.crt

Nginx не умеет вводить пароль от ключа сертификата, как это реализовано в apache, так что перед вами стоит выбор, либо каждый раз руками вводить его при рестарте сервера, либо удалить пароль из ключа. Удалить пароль из ключа можно так

Код:

openssl rsa -des3 -in <файл ключа> -out <временный файл ключа>
mv <временный файл ключа> <файл ключа>

Далее можно настроить редирект с 80 порта на 443, для работы сайта только через SSL.
Ниже пример виртуального хоста с редиректом.

Код:

server {
       listen 80;
       server_name site.ru www.site.ru;
       rewrite ^(.*) https://$host/$1 permanent;
 }

Вам нужно только сменить имя сайта и пути, примеры рабочие.

Статьи по созданию самоподписанных сертификатов:

http://www.opennet.ru/base/dev/apache_mod_ssl.txt.html
http://wiki.oszone.net/index.php/OpenSSL_-_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%B8_%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%81%D0%B5%D1%80%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D0%B2

Бесплатные SSL сертификаты можно получить на сайте http://www.startcom.org/

Удачной настройки!




1 Комментарий »


One Response to “Настройка виртуальных хостов с поддержкой SSL в nginx”

  1. links for 2011-04-17 « Bloggitation on 18 Апр 2011 at 10:06 #

    […] Настройка виртуальных хостов с поддержкой SSL в nginx nginx virtual hosts with ssl support (russian lang) (tags: nginx security sysadmin) […]

Trackback URI | Comments RSS

Leave a Reply

You must be logged in to post a comment.


« | »



Server load average: 0.01, 0.09, 0.06
Server uptime: 48 days, 23:50
Your IP is: 54.91.38.173.