Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
nginx:настройка_ssl_https_в_nginx [2016/01/31 15:07] mirocownginx:настройка_ssl_https_в_nginx [2024/05/12 19:20] (текущий) mirocow
Строка 1: Строка 1:
-{{tag>nginx server triks}}+{{tag>nginx server triks ssl certificate}}
  
 ====== Настройка ssl (https) в nginx ====== ====== Настройка ssl (https) в nginx ======
 +
 +===== Автоматическая настройка =====
 +
 +  * [[server:ssl]]
 +
 +===== Ручная настройка =====
  
  
Строка 12: Строка 18:
  
 /etc/nginx/ssl.conf /etc/nginx/ssl.conf
 +<code nginx>
   # Подключение самоподписанного сертификата   # Подключение самоподписанного сертификата
   # генерация сертификата:   # генерация сертификата:
Строка 21: Строка 27:
   ssl_certificate /etc/nginx/ssl/cert.pem;   ssl_certificate /etc/nginx/ssl/cert.pem;
   ssl_certificate_key /etc/nginx/ssl/cert.key;   ssl_certificate_key /etc/nginx/ssl/cert.key;
 +</code>
 +
 Создадим папку где будем хранить сертификаты: Создадим папку где будем хранить сертификаты:
  
-  mkdir /etc/nginx/ssl+<code bash>mkdir /etc/nginx/ssl</code> 
 +  
 Для большей безопасности ограничиваем доступ к сертификатам: Для большей безопасности ограничиваем доступ к сертификатам:
  
   chown nginx:nginx /etc/nginx/ssl   chown nginx:nginx /etc/nginx/ssl
   chmod 700 /etc/nginx/ssl   chmod 700 /etc/nginx/ssl
 +  
 Перейдем в эту папку и сгенерируем сертификат: Перейдем в эту папку и сгенерируем сертификат:
  
   cd /etc/nginx/ssl   cd /etc/nginx/ssl
   openssl req -new -x509 -days 9999 -nodes -out cert.pem -keyout cert.key   openssl req -new -x509 -days 9999 -nodes -out cert.pem -keyout cert.key
 +  
 При генерации вас попросят указать некоторые данные, так как мы создаём сертификат для себя то заполнять их не обязательно. При генерации вас попросят указать некоторые данные, так как мы создаём сертификат для себя то заполнять их не обязательно.
  
Строка 37: Строка 48:
  
 в конфигурации сайтов nginx: в конфигурации сайтов nginx:
 +<code nginx>
   server {   server {
           listen          *:443;       # порт https           listen          *:443;       # порт https
Строка 46: Строка 57:
           ...           ...
   }   }
 +</code>
 +
 Пример с принудительным перенаправлением с http на https: Пример с принудительным перенаправлением с http на https:
 в конфигурации сайтов nginx: в конфигурации сайтов nginx:
  
 +<code nginx>
   server {   server {
           listen          *:443;       # порт https           listen          *:443;       # порт https
Строка 62: Строка 76:
           ...           ...
   }   }
 +</code>
 +
 После настройки необходимо перезагрузить nginx: После настройки необходимо перезагрузить nginx:
  
   /etc/init.d/nginx reload   /etc/init.d/nginx reload
 +  
 Всё готово, для доступа к сайту следует использовать https протокол - https://my.site.com Всё готово, для доступа к сайту следует использовать https протокол - https://my.site.com
 Так как сертификат самоподписанный браузер попросит подтвердить исключение на его использование. Так как сертификат самоподписанный браузер попросит подтвердить исключение на его использование.
Строка 72: Строка 89:
 Создание сертификата командой: Создание сертификата командой:
  
-openssl req -new -x509 -days 9999 -nodes -out cert.pem -keyout cert.key+<code bash>openssl req -new -x509 -days 9999 -nodes -out cert.pem -keyout cert.key</code>
 запрашивает некоторую информацию для создания сертификата, заполнение которой можно пропустить. запрашивает некоторую информацию для создания сертификата, заполнение которой можно пропустить.
  
 Но если интересно вот описание параметров: Но если интересно вот описание параметров:
  
-Значение   Описание Обязательный параметр? +Значение      Описание                                                                                             Обязательный параметр  | 
-С  Двухсимвольный код страны (Country)  нет +С             | Двухсимвольный код страны (Country)                                                                 | нет                     | 
-ST  Название региона/области/края/республики/… (State Name)  нет +ST            Название региона/области/края/республики/… (State Name)                                             | нет                     | 
-L  Название города/поселка/… (Locality Name)  нет +            | Название города/поселка/… (Locality Name)                                                           | нет                     | 
-O  Название организации (Organization Name)  нет +            | Название организации (Organization Name)                                                            нет                     | 
-OU  Название отдела (Organization Unit)  нет +OU            Название отдела (Organization Unit)                                                                 | нет                     | 
-CN  Имя сертификата, при создании серверных сертификатов используется доменное имя сайта (Common Name) да +CN            Имя сертификата, при создании серверных сертификатов используется доменное имя сайта (Common Name)  да                      | 
-emailAddress  почтовый адрес (E-mail address)  нет+emailAddress  | Почтовый адрес (E-mail address)                                                                     | нет                     |
 Чтобы не вводить эти параметры интерактивное можно использовать опцию -subj: Чтобы не вводить эти параметры интерактивное можно использовать опцию -subj:
  
-openssl req -new -x509 -days 9999 -nodes -subj /C=RU/O=My\ site/CN=my.site.com/emailAddress=admin@site.com -out cert.pem -keyout cert.key+<code bash>openssl req -new -x509 -days 9999 -nodes -subj /C=RU/O=My\ site/CN=my.site.com/emailAddress=admin@site.com -out cert.pem -keyout cert.key</code> 
 + 
 +====== Перенаправление с http на https ====== 
 + 
 +Для принудительного перенаправления с http на https необходимо сзоздать секцию server и добавить в нее **ssi on** и **return 301** 
 + 
 +<code nginx> 
 +server { 
 +                                listen [IP]:80; 
 +                                server_name site.com; 
 +                                index index.php; 
 +                                access_log /home/site.com/logs/access.log; 
 +                                error_log  /home/site.com/logs/error.log error; 
 +                                charset utf-8; 
 +                                #charset        windows-1251; 
 + 
 +                                ssi on; 
 +                                return 301 https://$host:443$request_uri; 
 +}   
 +</code>
  
 +===== Ссылки =====
  
 +{{topic>[ssl certificate]}}