Корпорация Google уже неоднократно заявляла о том, что будет выше ранжировать сайты, которые работают через защищеное соединение. А начиная с этого года ещё и Firefox всячески пытается предупредить своих пользователей о том, что их данные могут оказаться в опасности если попытаться ввести логин и пароль на сайте без SSL шифрования.

Nginx SSL

Таким образом, если у вас есть форум или система комментирования, но сайт работает через не защищенное соединение, то пользователи у которых Firefox будут видеть то, что я показал на скриншоте выше. А это отпугивает посетителей. Поэтому сегодня будем решать эту проблему.

Ранее я уже писал статью о том как заставить работать в связке Apache2 и Nginx, где первый выступает в роли бэкэнда, а второй в роли фронтэнда. И если ваш сайт работает именно в такой связке, то я расскажу в сжатой и доступной форме как защитить передаваемый трафик между сервером и клиентом, используя механизм SSL шифрования.

Редирект https

Для начала вам потребуется сам сертификат безопасности. Без него никак не получится перевести сайт на защищенное соединение. Если он у вас уже есть, то далее всё очень просто.

Не забудьте скачать моё приложение на iPhone

Скачать

И так, открываем конфигурационный файл Nginx, а именно nginx.conf. Для начала сразу добавим конфигурацию для редирект с http на https. Для этого перед секцией server своего сайта добавляем:

server {

listen 11.22.33.44:80;

server_name intaiwan.ru www.intaiwan.ru;

rewrite ^(.*) https://$host$1 permanent;

}

На этом всё. Редирект с http на https мы настроили. Теперь переходим ниже, в саму секцию server нашего сайта. Там нам необходимо заменить строчку

listen 11.22.33.44:80;

на

listen 11.22.33.44:443 ssl;

а ниже добавляем строки:

ssl_certificate /папка/папка2/папка3/intaiwan.ru.pem;

ssl_certificate_key /папка/папка2/папка3/intaiwan.ru.key;

ssl_session_cache shared:SSL:10m;

ssl_session_timeout 10m;

ssl_buffer_size 4k;

Таким образом, настройка редиректа с http на https и защищённого соединения у нас должен выглядеть примерно так:

server {

listen 11.22.33.44:80;

server_name intaiwan.ru www.intaiwan.ru;

rewrite ^(.*) https://$host$1 permanent;

}

server {

listen 11.22.33.44:443 ssl;

server_name intaiwan.ru www.intaiwan.ru;

charset UTF-8;

error_page 404 = @fallback;

ssl_certificate /папка/папка2/папка3/intaiwan.ru.pem;

ssl_certificate_key /папка/папка2/папка3/intaiwan.ru.key;

ssl_session_cache shared:SSL:10m;

ssl_session_timeout 10m;

ssl_buffer_size 4k;

location / {

...

...

...

}

}

А теперь нам необходимо внести небольшую запись в настройки Apache в секцию VirtualHost нашего сайта:

SetEnvIf X-Forwarded-Proto https HTTPS=on

Однако необходимо учитывать один важный момент. Вам необходимо будет переписать пути до картинок, стилей и скриптов с http на https. Иначе страницы будут отображаться с ошибками.