Настраиваем ssl (https) в nginx на FreeBSD

Создадим временную папку для сертификатов, которые мы генерировали в предыдущей статье

mkdir /tmp/ssl/

теперь в нее надо положить два файла ssl.crt (сертификат) и ssl.key (приватный ключ). как вы это сделаете решать вам, я лично сделал использую редактор ee, вставляя из буфера обмена текст
в итоге получилось

cd /tmp/ssl/
ee  /tmp/ssl/ssl.crt
ee  /tmp/ssl/ssl.key

Создадим папку где будем хранить сертификаты

mkdir /usr/local/etc/nginx/ssl

Расшифровываем приватный ключ.

openssl rsa -in /tmp/ssl/ssl.key -out /usr/local/etc/nginx/ssl/site.key

Устанавливаем необходимые права

chmod 600 site.key

Скачиваем CA сертификаты с сайта startssl.com:

fetch http://www.startssl.com/certs/ca.pem
fetch http://www.startssl.com/certs/sub.class1.server.ca.pem

Создадим единый сертификат:

cat ssl.crt sub.class1.server.ca.pem ca.pem > /usr/local/etc/nginx/ssl/site.crt

Переходим к конфигурированию nginx. Следующие три стройки отвечают за ssl, вставляем в  секцию server или http

ssl on;
ssl_certificate /usr/local/etc/nginx/ssl/ssl-unified.crt;
ssl_certificate_key /usr/local/etc/nginx/ssl/ssl.key;

пример части конфига

server {
        listen          *:443;
        listen          *:80;
        server_name     site.ru;
        ssl on;
        ssl_certificate /usr/local/etc/nginx/ssl/site.crt;
        ssl_certificate_key /usr/local/etc/nginx/ssl/site.key;
}

Если хотите принудительно использовать HTTPS, конфиг nginx немного изменится

server {
        listen          *:443;
        listen          *:80;
        server_name     site.ru;
        ssl on;
        ssl_certificate /usr/local/etc/nginx/ssl/site.crt;
        ssl_certificate_key /usr/local/etc/nginx/ssl/site.key;
		if ( $scheme = "http" ) {
	      rewrite ^/(.*)$	https://$host/$1 permanent;
        }
}

 

Возможные ошибки

nginx: [emerg] unknown directive «ssl» in /usr/local/etc/nginx/nginx.conf:

решение

проверяем собран ли nginx с поддержкой ssl

nginx -V
nginx version: nginx/1.2.4
configure arguments: --prefix=/usr/local/etc/nginx --with-cc-opt='-I /usr/local/include' --with-ld-opt='-L /usr/local/lib' --conf-path=/usr/local/etc/nginx/nginx.conf --sbin-path=/usr/local/sbin/nginx --pid-path=/var/run/nginx.pid --error-log-path=/var/log/nginx-error.log --user=www --group=www --with-ipv6 --http-client-body-temp-path=/var/tmp/nginx/client_body_temp --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp --http-proxy-temp-path=/var/tmp/nginx/proxy_temp --http-scgi-temp-path=/var/tmp/nginx/scgi_temp --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi_temp --http-log-path=/var/log/nginx-access.log --with-http_stub_status_module --with-pcre

Нет --with-http_ssl_module, потдержка ssl отсутсвует пересобираем nginx

cd /usr/ports/www/nginx
make config clean

make reinstall clean
service nginx restart
Остались или есть ещё вопросы? Задавайте!
(не забудьте указать ссылку на этот пост)




Один комментарий

  1. versus Ukraine Mozilla Firefox Mac OS :

    большое спасибо

    Thumb up 0 Thumb down 0

Оставить комментарий

Установка, настройка, мониторинг и администрирование linux, unix, windows систем