Настройка виртуальных хостов с поддержкой 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/

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

Источник: http://sudouser.com/nastrojka-virtualnyx-xostov-s-podderzhkoj-ssl-v-nginx.html


Понравилась статья? Поделись с остальными.

Комментарии закрыты.