+7 495 008 8452
  • Загрузка
Выберите ваш цвет

Пошаговая инструкция в 15 ходов по переходу на HTTPS на Nginx

ВНЕЗАПНО вам потребовался HTTPS. Мало ли зачем. Например, карточные платежи на сайте принимать. Как это устроить? Вот чек-лист:

1. Домен есть? Если проект на стадии разработки, то нет, покупайте;

2. A-запись и NS-записи для домена прописаны?

3. CSR - код сгенерирован? Бывают хостеры, которые такую услугу оказывают только в ручном режиме. Значит, пишите в техпом;

4. SSL-сертификат для доменного имени куплен? В России хорошая репутация у NIC.RU, например;

5. Теперь зайдите на сервер по SSH и отдайте команду openssl genrsa -out private.key 2048

6. Создайте CSR-запрос командой openssl req -new -sha256 -key private.key -out csr.csr Для этого используйте регистрационные данные домена, те, что отдает Whois. Иначе будут нестыковки;

7. Скопируйте по SSH код CSR командой cat csr.csr и передайте его компании, у которой покупаете SSL-сертификат;

8. Для подтверждения владения доменом создайте почту вида admin@our-domain.com и пришлите с нее подтверждение для покупки SSL-сертификата;

9. Создайте bundled PEM-сертификат. В письме от поставщика SSL должен быть сертификат в PEM-формате. Откройте sublime text, вставьте туда этот сертификат, добавьте туда промежуточный сертификат, который скачайте по ссылке https://search.thawte.com/support/ssl-digital-certificates/index?page=content&actp=CROSSLINK&id=AR1372

10. Сохраните полученный текст в файл по адресу /etc/nginx/certificate_bundled.crt.

11. По этому же пути скопируйте приватный ключ командой mv private.key /etc/nginx/private.key

12. Настройте файл конфигурации nginx.conf по адресу /etc/nginx/nginx.conf
Для этого в секцию http добавьте код:

ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_prefer_server_ciphers on;
ssl_stapling on;
resolver 8.8.8.8;

13. Затем найдите файл example_ssl.conf по адресу /etc/nginx/conf.d/example_ssl.conf
В секции server добавьте код:

server {
listen 443 ssl;
server_name www.site.ru;

root /var/www/html/web/; #не забываем здесь тоже указать свой root, если он какой-то специфический как у меня
index index.php index.html;
set $yii_bootstrap "index.php";

# здесь немного конфига для yii, для тех кто его использует
location / {
# Define the index
index index.html $yii_bootstrap;
try_files $uri $uri/ /$yii_bootstrap?$args;
}

# Any of the protected directories, we will ignore. There is no reason
# to share out the protected web spaces
location ~ ^/(commands|components|config|controllers|models|vendor|views) {
deny all;
}

#avoid processing of calls to unexisting static files by yii
location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
try_files $uri =404;
}
.......

keepalive_timeout 60;
ssl_certificate certificate_bundled.crt;
ssl_certificate_key private.key;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "RC4:HIGH:!aNULL:!MD5:!kEDH";
add_header Strict-Transport-Security 'max-age=604800';

.......
location ~ \.php$ {
.......
fastcgi_param HTTPS on; # Для php-fpm
.......
}
}

14. Отключите пароль приватного ключа командой openssl rsa -in /etc/nginx/private.key -out /etc/nginx/private.key

15. Перезагрузите сервер командой nginx -s reload

Готово!


Удачи вам! Опытом веб-программирования поделилась с вами Веб-студия "АКРИТ". Разработка и продвижение сайтов на CMS «1С-Битрикс». Мы реализуем полный цикл работ - от разработки логотипа и фирменного стиля будущей компании, до ее продвижения на рынок, используя максимально эффективные современные технологии.

Назад в раздел

Подписаться на новые материалы раздела: