Настраиваем 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
Share

You may also like...

1 Response

  1. versus:

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

Добавить комментарий

Ваш адрес email не будет опубликован.