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

Nginx SSL

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

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

Редирект https

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

Скачать

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

[java]
server {
listen 11.22.33.44:80;
server_name intaiwan.ru www.intaiwan.ru;
rewrite ^(.*) https://$host$1 permanent;
}
[/java]

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

[java]
listen 11.22.33.44:80;
[/java]

на

[java]
listen 11.22.33.44:443 ssl;
[/java]

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

[java]
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;
[/java]

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

[java]
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 / {



}
}
[/java]

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

Скачать

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

[java]
SetEnvIf X-Forwarded-Proto https HTTPS=on
[/java]

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