30 Авг
Настройка виртуальных хостов с поддержкой 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
Понравилась статья? Поделись с остальными.