CloudLite
8 (495) 784-61-39 techsupport@cloudlite.ru
Техническая поддержка
8 (495) 784-61-37 sales@cloudlite.ru
Тарифы, оплата, счета
Array
(
    [ELEMENT_CODE] => Kak_ustanovit_SSL-sertifikat_na_Nginx_Linux
)
БАЗА ЗНАНИЙ

БАЗА ЗНАНИЙ

КАК УСТАНОВИТЬ SSL СЕРТИФИКАТ НА NGINX (LINUX)

Когда вы сгенерировали CSR-запрос и приобрели SSL сертификат, воспользуйтесь этой инструкцией по установке сертификата на веб-сервер Nginx под управлением Linux: Ubuntu, Debian или CentOS.

После заказа SSL сертификата файлы для его установки отразятся в панели управления (меню SSL): .CA - файл сертификата Центра Сертификации (Certificate Authority). .CRT - файл сертификата вашего веб-сайта.




Как загрузить нужные файла на веб-сервер

Прежде всего загрузите файлы .ca и .crt на веб-сервер. При отсутствии графического окружения рабочего стола на сервере загрузка файлов может осуществиться на другой компьютер. Впоследствии их можно будет перенести.

Внимание: предполагается, что нужная для применения пара закрытый/открытый ключ была создана на том же веб-сервере, куда будет перенесен приобретенный сертификат. При создании ключей на другом сервере следует также перенести файл закрытого ключа .key на ваш веб-сервер (аналогично описанной ниже процедуре копирования файлов сертификатов).

Как переносить сертификаты с компьютера Linux/Mac OS:

Проще всего – при помощи опции SCP, встроенной в возможность терминала вашего компьютера:

Скачайте файлы .CA и .CRT на локальный компьютер. Откройте терминал и папку с сохраненными сертификатами (напр., Downloads):

cd ~/Downloads

Скопируйте сертификаты вашего сайта и Центра Сертификации на веб-сервер:

scp mydomain.ru_crt.crt mydomain.ru_ca.crt user@1.1.1.1:/etc/ssl

Здесь:

scp - команда для копирования файлов

mydomain.ru_crt.crt - имя загруженного из панели файла сертификата вашего веб-сайта

mydomain.ru_ca.crt - имя загруженного из панели файла сертификата Центра Авторизации

user - имя вашего пользователя для подключения к серверу через ssh (часто используется root)

1.1.1.1 - IP-адрес вашего веб-сервера

/etc/ssl - директория на удаленном сервере, куда следует сохранить загружаемые файлы.

Как переносить сертификаты с компьютера Windows:

Скачайте, установите и включите программу WinSCP. В открывшемся окне наберите данные для подключения к вашему серверу по SSH. Слева в окне отразятся файлы на локальном компьютере, справа - на подключенном удаленном сервере. Выберите или создайте директорию, куда нужно сохранить сертификаты, в правой части окна. Перетащите файлы .CA и .CRT в эту директорию из левой части окна.

Внимание: можно перенести файл закрытого ключа (.key) для удобства в ту же директорию, куда вы скопировали файлы сертификатов. Если вы не делаете этого, просто запомните путь до этого файла и потом укажите его в файле конфигурации Apache вместо пути, рассмотренном в нашем примере.

Если закрытый ключ .key сгенерирован прямо на сервере, то для его копирования в другую директорию подойдет команда:

cp /home/root/private.key /etc/ssl/private.key

Здесь:

cp - команда копирования

/home/root/ - путь до файла ключа

private.key - имя файла ключа

/etc/ssl/private.key - путь, по которому необходимо скопировать файл ключа

Вы можете удалить файл ключа из старого расположения такой командой:

rm /home/root/private.key

Как настроить веб-сервер Nginx на применение SSL сертификата

После копирования файлов сертификата сайта и Центра Сертификации вы должны отредактировать параметры вашего веб-сервера Nginx. Подключитесь к вашему серверу по SSH от имени пользователя root и выполните такие действия:

1.       Объедините файлы сертификата Центра Сертификации (.CA) и сертификата вашего веб-сайта (.CRT) в один документ:

cat /etc/ssl/mydomain.ru_crt.crt /etc/ssl/mydomain.ru_ca.crt >> mydomain.crt

2.       Откройте файл конфигурации сайта, для которого устанавливается SSL сертификат. Если, к примеру, параметры веб-сайта хранятся в файле /etc/nginx/sites-enabled/default:

nano /etc/nginx/sites-enabled/default

Внимание: На Ubuntu/Debian файлы параметров сайтов Nginx обычно располагаются в директории /etc/nginx/sites-enabled/ . На CentOS стандартное расположение - /etc/nginx/conf.d/

Для поиска интересующей конфигурации подойдет команда ls /директория/конфигураций (напр. ls /etc/nginx/sites-enabled), отображающая полный список файлов в нужной директории.

Теперь с помощью команды nano можно открыть определенный файл (напр. nano /etc/nginx/sites-enabled/default). Чтобы проверить, что открытый файл является конфигурацией вашего сайта, найдите в нем строку server_name. Ее значение должно соответствовать домену, для которого вы устанавливаете SSL сертификат (напр. www.mydomain.ru)

Внимание для CentOS: если на сервере не установлен редактор nano, используйте такую команду для его установки:

используйте такую команду для его установки:

yum install nano

Затем добавьте приведенные ниже параметры в открытый файл конфигурации:

listen 443 ssl;
ssl_certificate /etc/ssl/mydomain.crt;
ssl_certificate_key /etc/ssl/private.key;

Здесь:

/etc/ssl/mydomain.crt - путь до файла сертификатов вашего сайта и центра сертификации

/etc/ssl/private.key - путь к файлу вашего закрытого ключа

Внимание: если вы хотите, чтобы после установки SSL сертификата ваш сайт был доступен только по безопасному протоколу https (порт 443), отредактируйте файл его конфигурации по аналогии с Примером 1. Если же нужно, чтобы сайт также оставался по-прежнему доступен по незащищенному протоколу http (порт 80) – см. Пример 2

(изменения выделены жирным шрифтом).

Пример 1 (только HTTPS):

server {
       listen 443 ssl default_server;
        root /var/www/html;
        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

server_name www.mydomain.ru;
        ssl_certificate /etc/ssl/mydomain.crt;
        ssl_certificate_key /etc/ssl/private.key;
        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #       include snippets/fastcgi-php.conf;
        #
        #       # With php7.0-cgi alone:
        #       fastcgi_pass 127.0.0.1:9000;
        #       # With php7.0-fpm:
      #       fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        #}
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #       deny all;
        #}

Пример 2 (HTTPS + HTTP):

 

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        listen 443 ssl;
        # Note: You should disable gzip for SSL traffic.
        # See: https://bugs.debian.org/773332
        #
        # Read up on ssl_ciphers to ensure a secure configuration.
        # See: https://bugs.debian.org/765782
        #
        # Self signed certs generated by the ssl cert package
        # Don't use them in a production server!
        #
        # include snippets/snakeoil.conf;
        root /var/www/html;
        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;
        server_name www.mydomain.ru;
        ssl_certificate /etc/ssl/mydomain.crt;
        ssl_certificate_key /etc/ssl/private.key;
        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #       include snippets/fastcgi-php.conf;
        #
        #       # With php7.0-cgi alone:
        #       fastcgi_pass 127.0.0.1:9000;
        #       # With php7.0-fpm:
      #       fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        #}
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #       deny all;
        #}
}

 

Перезапустите сервис nginx:

Ubuntu/Debian:

/etc/init.d/nginx restart

CentOS:

service nginx restart

Если на сервере настроен файрвол iptables, нужно разрешить входящие подключения по протоколу https (порт 443) для вашего файрвола. Следуйте документации к вашей ОС, т.к. в разных дистрибутивах Linux работа с iptables осуществляется различно. Несколько примеров:

Ubuntu 16.04:

ufw allow 443/tcp

Debian:

iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT

CentOS:

iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

Как проверить настройки

После этого SSL сертификат установлен на веб-сервер Apache. Чтобы проверить правильность настроек, откройте ваш-веб сайт в браузере по протоколу https (например, https://mydomain.ru). При верной установке сертификата в адресной строке вашего браузера появится иконка замка, при клике на нее отразится информация о приобретенном вами SSL сертификате.



Не нашли ответа на Ваш вопрос? Напишите нам!

techsupport@cloudlite.ru - служба техподдержки

sales@cloudlite.ru - вопросы по услугам, оплате, документам и партнерству

partner@cloudlite.ru - партнерская программа