- Что такое ssl-сертификат
- Ssl на хостинге beget
- Где взять ssl-сертификат?
- Генерация ключа по алгоритму диффи-хеллмана
- Загрузка стороннего ssl-сертификата
- Зачем нужен ssl-сертификат?
- Использование плагина webroot
- Как подключить ssl-сертификат
- Настраиваем конфигурацию nginx для ssl
- Продление ssl-сертификата
- Создаем сниппет конфигурации для ssl-ключа и сертификата
- Создаем сниппет конфигурации с устойчивыми настройками шифрования
- Установка ssl в ispmanager
- Установка ssl на cpanel
- Файлы сертификата
- Шаг 3. настраиваем tls/ssl на веб-сервере
- Шаг 4. настраиваем файрвол
- Шаг 5. подключаем изменения в nginx
- Шаг 6. настраиваем автоматическое обновление
- Шаг 0. подготовка
Что такое ssl-сертификат
https — протокол для передачи данных с криптографическим SSL соединением. Чтобы его настроить, необходимо предварительно установить цифровой SSL сертификат.
Протокол https – указывается в адресе ссылки, перед вашим доменом.
Пример: https://my-sertif.ru.
Если у вашего сайта пока нет ssl-сертификата, то он будет открываться только по протоколу http(без s на конце).
Пример: http://my-site.ru.
Чтобы обеспечить безопасное соединение и открытие сайта по https и подключается ssl-сертификат. SSL-сертификат — это что-то вроде цифрового документа, обеспечивающего безопасность вашего сайта. Он защищает данные ваших клиентов, которые они оставляют на сайте. Плюс ко всему, позиции сайтов с таким сертификатом значительно выше в поисковой выдаче, чем сайты без него.
Сертификат безопасности и 152-ФЗ — для сайтов, где пользователь вводит личные и платежные данные SSL-сертификат обязателен по закону № 152-ФЗ «О персональных данных»: компании обязаны обеспечить безопасность хранения информации о пользователях. В первую очередь это относится к финансовым организациям, интернет-магазинам, форумам и социальным сетям.
В этой статье мы расскажем, как можно подключить бесплатный SSL-сертификат от сервиса Cloudflare.
Ssl на хостинге beget
Для установки защищенного протокола на хостинге Beget перейдите в раздел “Домены и поддомены”, после чего нажмите на кнопку “Управление SSL-сертификатами”. Она будет напротив нужного домена.
Во всплывающем окошке вы можете выбрать параметры установки для домена.
Здесь для установки доступен Let`s Encrypt. Данный центр сертификации предоставляет свои услуги абсолютно бесплатно. Вы можете воспользоваться им или любым другим. Для доступа к настройке сертификата нужно использовать две соседние вкладки.
После заказа к вам на почту придут подробности. Скорее всего, от вас не потребуется больше никаких действий. На почту придет уведомление о завершении установки на хостинг, и вы сможете начать пользоваться SSL.
Проблемы могут возникнуть в том случае, если домен размещен на сторонних (не бегетовских) NS-серверах. Тогда вам вручную придется создавать A-запись в DNS вашего домена.
Где взять ssl-сертификат?
Обычно этими сертификатами приторговывают сами хостинги. Если вы используете один из них, то вам не придется ломать голову над тем, какой выбрать. Достаточно взглянуть на список предложенных и выбрать самый дешевый или наоборот подороже.
Сейчас популярен вариант от Let`s Encrypt. Они распространяются бесплатно, и многие хостеры поддерживают возможность быстрой установки и подключения.
Кроме этого, в интернете можно найти очень много компаний, которые как раз занимаются тем, что проверяют домены и выдают соответствующие полномочия для установки зашифрованного протокола.
Есть даже огромные сервисы, которые проводят персональную проверку, после чего выдают именной сертификат. От обычного он отличается тем, что прямо в адресной строке, возле зеленого замочка, будет видно название вашей компании. Подобный подход покажет вашим клиентам, что они имеют дело с серьезной организацией. Само собой, именная проверка стоит в несколько раз (а то и десятков) дороже.
Приведу вам список самых популярных сервисов, где вы сможете купить SSL:
Вы можете поискать и другие компании самостоятельно. Достаточно просто ввести в поиск нужный запрос, вся необходимая информация будет как на ладони.
Генерация ключа по алгоритму диффи-хеллмана
Для повышения безопасности вам необходимо сгенерировать ключ по алгоритму Диффи-Хеллмана. Для генерации ключа длиной 2048 бит используйте такую команду:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048Процесс может занять несколько минут.
Загрузка стороннего ssl-сертификата
К домену, привязанному к сайту на InSales, также можно подключить сторонний SSL-сертификат.
Мы поддерживаем все типы SSL-сертификатов от любых поставщиков.
1. Для подключения стороннего SSL-сертификата необходимо запросить у поставщика приватный ключ и всю цепочку сертификатов. Для извлечения содержимого файлов открывайте их в блокноте или в notepad .
Важно: при затруднениях в формировании цепочки сертификатов – пришлите все файлы в техническую поддержку для формирования и загрузки верных файлов.
2. Необходимо составить верную цепочку сертификатов:
– откройте блокнот или notepad (лучше notepad ),
– скопируйте в него доменный сертификат, далее с новой строчки – корневой, и после корневого с новой строчки – промежуточный (корневой и промежуточный можно менять местами).
При этом необходимо копировать и вставлять сертификаты вместе с комментариями “—begin/end certificate—“. Сохраняете файл в формате txt (например, cert.txt). Должно получиться подобное, только с большим количеством символов:
Важно: определить в каком файле какой сертификат находится зачастую можно по его названию и комментарию. Файлы с комментариями “BEGIN CERTIFICATE REQUEST” и расширением “csr” можно сразу исключить из рассмотрения. Если файл называется “certificate_ca.crt” и в нем добавлены два сертификата, то скорее всего это промежуточный и корневой.
Их можно скопировать на второе и третье место в цепочке в любом порядке. Доменный сертификат как правило называется “certificate.crt”. У разных регистраторов названия файлов разные. Если не получается определить тип сертификатов, то обратитесь в техническую поддержку за помощью.
3. В отдельный файл скопируйте приватный ключ (тоже с комментариями BEGIN PRIVATE KEY или BEGIN RSA PRIVATE KEY) и сохраните в формате txt (например, key.txt). Должно получиться подобное:
4. Оба файла должны быть в кодировке utf-8, удобнее всего это проверять в notepad :
5. Перейдите в бэк-офис в раздел Настройки → Домены и нажмите “Подключить” в столбце “SSL-сертификат”:
6. Выберите “Использовать для всего сайта” и “Загрузить свой сертификат”, далее загрузите файл key.txt в качестве приватного ключа, а cert.txt – в качестве цепочки сертификатов. Сохраните изменения.
7. Дождитесь проверки сертификата, это может занять до 4-6 часов. После успешной проверки статус в столбце “SSL-сертификат” сменится на “Настроен”.
Зачем нужен ssl-сертификат?
Я уже описывал что такое SSL в одном из материалов на iklife. Если говорить кратко, то ССЛ позволит вам использовать защищенный протокол шифрования данных на вашем сайте. Данные, передаваемые от сайта к клиенту (посетителю) будут надежно зашифрованы.
Реализация такого подхода возможна благодаря математически связанным ключам шифрования. От сервера (веб-ресурса) к клиенту (компьютеру посетителя) информация передается с помощью трех ключей шифрования. Два из них – закрытые. Они есть и у сервера, и у клиента. Третий ключ – открытый, он используется обеими машинами.
Все три ключа связаны между собой, даже если злоумышленник узнает открытый ключ, он никогда не сможет расшифровать информацию из-за отсутствия двух других ключей. Также во время обмена данными между клиентом и сервером создается ключ сессии, который является гарантом безопасности ваших данных.
Безопасность и конфиденциальность – две вещи, к которым стремится интернет-сообщество. Именно по этой причине к сайтам, не использующим защищенное соединение, доверие неуклонно падает.
Использование плагина webroot
Алгоритм работы Webroot включает в себя создание специального файла в директории /.well-known. Она размещается в корневом каталоге веб-сервера (document root) и может быть открыта сервисом Let’s Encrypt для проверки. В зависимости от ваших настроек, вам может понадобиться явно разрешить доступ к папке /.well-known.
Если вы ещё не установили Nginx, сделайте это, следуя руководству по установке Nginx на Ubuntu 16.04.
Чтобы убедиться в том, что папка доступна сервису Let’s Encrypt, внесем небольшие изменения в конфигурацию Nginx. По умолчанию файл конфигурации находится в папке /etc/nginx/sites-available/default. Мы будем использовать редактор Nano для внесения изменений:
sudo nano /etc/nginx/sites-available/defaultВнутри блока server добавьте такой блок location:
# Добавить в SSL-блок server
location ~ /.well-known {
allow all;
}Вам также стоит посмотреть, где расположен корневой каталог веб-сервера (document root), так как этот путь необходим при работе с Webroot. Если вы используете стандартный файл конфигурации, она будет расположена в /var/www/html.
Сохраните и закройте файл.
Проверьте вашу конфигурацию на синтаксические ошибки:
sudo nginx -tЕсли ошибок нет, перезапустите Nginx, используя эту команду:
sudo systemctl restart nginxКак подключить ssl-сертификат
При подключении SSL-сертификата через InSales, предоставляются сертификаты DV от поставщика Let’s Encrypt.
Для подключения SSL-сертификата перейдите в раздел Настройки → Домены и нажмите кнопку “Подключить” в столбце “SSL-сертификат”.
При подключении сертификата будет выполняться шифрование всех страниц сайта. В случае если сайт уже проиндексирован, в инструментах поисковых систем для веб-мастеров нужно будет внести соответствующие настройки, чтобы страницы сайта не выпадали из индекса.
После нажатия на кнопку “Сохранить” будет выполнено перенаправление на страницу “Ваши домены”, где у домена, к которому подключается SSL-сертификат, будет статус “Не настроен”.
Настраиваем конфигурацию nginx для ssl
Теперь, когда мы подготовили сниппеты, можно обновить нашу конфигурацию Nginx и подключить SSL.
В данном руководстве мы полагаем, что вы используете стандартный файл с блоками server, расположенный в папке /etc/nginx/sites-available. Если вы используете другой файл с блоками server, замените название в представленных ниже командах.
Перед тем, как двигаться дальше, давайте сделаем резервную копию нашего текущего файла с блоками server:
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bakТеперь откройте файл с блоками server для внесения изменений:
sudo nano /etc/nginx/sites-available/defaultВнутри ваш блок server, вероятно, начинается так:
server {
listen 80 default_server;
listen [::]:80 default_server;
# Конфигурация SSL
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
. . .Продление ssl-сертификата
SSL-сертификат, подключаемый через InSales, необходимо продлевать 1 раз в год.
Если SSL-сертификат был подключен через InSales, то за 1 месяц до конца его действия в бэк-офисе сайта в разделе Аккаунт → Счета будет автоматически выставлен счет для пролонгации SSL-сертификата на следующий год.
Создаем сниппет конфигурации для ssl-ключа и сертификата
Сперва создадим сниппет конфигурации Nginx в папке /etc/nginx/snippets.
Для правильного распознавания назначения файла назовем его ssl-, затем укажем доменное имя и в конце поставим .conf:
Создаем сниппет конфигурации с устойчивыми настройками шифрования
Следующим шагом мы создадим другой сниппет, определяющий некоторые настройки SSL. Это позволит Nginx подключить устойчивый «набор шифров» SSL (англ. cipher suite) и некоторые дополнительные функции, которые помогут обеспечить безопасность нашего сервера.
Прим. перев. Cipher Suite — это совокупность алгоритмов, используемых в конкретной TLS/SSL-сессии:
- алгоритм выработки сессионных ключей шифрования;
- алгоритм, используемый для аутентификации сервера;
- непосредственно сам симметричный алгоритм шифрования трафика;
- и алгоритм контроля целостности (MAC, message authentication code).
Установленные нами параметры могут быть использованы повторно для конфигураций Nginx в будущем, поэтому дадим файлу стандартное название:
sudo nano /etc/nginx/snippets/ssl-params.confДля настройки безопасной связки Nginx-SSL мы будем использовать рекомендации сайта Cipherli.st. Он создан для предоставления быстрого доступа к готовым настройкам шифрования популярного программного обеспечения. Дополнительная информация доступна в руководстве по настройке SSL для Nginx.
Примечание. Предлагаемые стандартные настройки на сайте Cipherli.st обеспечивают устойчивую безопасность, но иногда это приводит к ухудшению совместимости. Если вам необходимо поддерживать более старые версии клиентов, используйте альтернативный список настроек, доступный при нажатии на значок «Yes, give me a ciphersuite that works with legacy/old software.» Составить такой список можно и вручную.
Для наших целей можно скопировать предлагаемые настройки целиком. Нам потребуется внести лишь некоторые изменения.
Сперва добавим DNS-резолвер. Используем для нашего руководства тот, что предлагает Google. Затем установим в качестве параметра ssl_dhparam указатель на файл ключа Диффи-Хеллмана, который мы сгенерировали ранее.
Установка ssl в ispmanager
Чтобы установить ССЛ в ISPmanager 4, вам нужно перейти в панель управления и в соответствующий раздел. Он имеет название SSL-сертификаты.
В правом углу найдите кнопку “Создать”, после чего перед вашими глазами появится такое окно.
Нужно ввести все необходимые данные вручную. Поле “Имя сертификата” задается произвольно. Все остальное нужно предоставить по требованию. Выбираем “существующий” тип, и далее “указать вручную” в поле “Использовать ключ”.
Приватный ключ и сертификат выдаются сервисом, который проводит сертификацию. В поле “Цепочка сертификатов” нужно ввести два вида: промежуточный, а сразу за ним корневой. Обратите внимание, что на скриншоте отмечено, как именно должны быть расположены эти два ключа относительно друг друга.
Если при установке возникают ошибки, проверьте еще раз все введенные данные на наличие лишних пробелов и символов.
Как только SSL будет установлен, мы должны перейти в раздел “WWW домен” и поставить там вот такую галочку.
В обведенном красным поле необходимо выбрать нужное название, которое мы произвольно указывали при настройке SSL.
В ISPmanager 5 этот процесс мало чем отличается, тем не менее, я считаю необходимым описать и его.
Перейдите в одноименный раздел, который находится в “WWW”. Я думаю, вы сразу заметите его.
Далее вам нужно кликнуть по кнопке “Создать” и перейти непосредственно к настройке.
Сервис предложит вам выбрать тип сертификата – выбираем “Существующий”.
Нам необходимо будет заполнить все поля (имя, ключи и сам сертификат). Их выдает компания, у которой был куплен сертификат.
На завершающем этапе нам необходимо перейти в раздел WWW-домены и найти нужный из списка. Кликаем по домену два раза, после чего переходим к параметрам.
Отмечаем галочками “Защищенное соединение” и “Повышенная безопасность”, выбираем нужный SSL-сертификат в выпадающем списке.
Готово! Теперь ваш сайт будет использовать защищенное соединение.
Установка ssl на cpanel
Для подключения SSL на хостинге Cpanel нужно перейти в соответствующий раздел на вашей панели управления. Он находится во вкладке “Безопасность”.
Теперь нужно кликнуть по кнопке “Управление сайтами с SSL”.
Выбираем нужный домен.
После этого откроется окно для вставки данных. Вводим сам сертификат, ключ и цепочку. Все данные можно получить на сайте компании, у которой вы заказывали эту услугу.
Вводим данные сертификата (после BEGIN CERTIFICATE). Заканчивается на END CERTIFICATE. Далее вставляем закрытый ключ и цепочку сертификатов.
Закрытый ключ начинается со слов “BEGIN RSA PRIVATE KEY”.
Здесь вставляется сначала промежуточный, а затем корневой сертификат. Конец первого и начало второго должны располагаться так, как показано на скриншоте.
Теперь нам остается завершить установку. Для этого мы нажимаем соответствующую кнопку.
Файлы сертификата
После получения сертификата у вас должны появиться следующие файлы в PEM-кодировке:
Шаг 3. настраиваем tls/ssl на веб-сервере
Теперь, когда у вас есть SSL-сертификат, необходимо настроить веб-сервер Nginx так, чтобы он начал его использовать.
Внесем некоторые изменения в нашу конфигурацию:
- Создадим сниппет конфигурации, содержащий расположение нашего SSL-ключа и файлов сертификата.
- Создадим сниппет конфигурации, содержащий настройки устойчивого SSL, которые можно будет использовать в будущем для любого сертификата.
- Обновим блоки
serverв конфигурации Nginx, которые будут управлять SSL-запросами и использовать оба вышеуказанных сниппета.
Такой подход к настройке Nginx позволяет сохранить блоки server чистыми и сделать конфигурацию доступной для повторного использования.
Шаг 4. настраиваем файрвол
Если у вас включен файрвол ufw, вам необходимо обновить настройки и разрешить SSL-трафик. К счастью, Nginx регистрирует несколько профилей с ufw после установки.
Вы можете посмотреть текущие настройки, введя:
sudo ufw statusШаг 5. подключаем изменения в nginx
Теперь, когда мы внесли изменения в конфигурацию и обновили правила файрвола, нужно перезапустить Nginx, чтобы изменения вступили в силу.
Первым делом стоит проверить и убедиться, что синтаксические ошибки в наших файлах отсутствуют. Это можно сделать, введя:
sudo nginx -tВ случае успеха ваш результат должен выглядеть следующим образом:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulЕсли ваш результат совпадает с тем, что вы видите выше, значит, ваш файл конфигурации не содержит синтаксических ошибок. Для активации изменений безопасно перезапустим Nginx:
sudo systemctl restart nginxШаг 6. настраиваем автоматическое обновление
Сертификаты от Let’s Encrypt действуют только в течение 90 дней. Это побуждает пользователей к автоматизации процесса обновления. Нам понадобится создать регулярно запускающуюся команду для проверки и автоматического обновления сертификатов, срок которых истекает.
Для запуска проверки ежедневных обновлений мы будем использовать Cron — стандартный системный сервис для запуска повторяющихся задач. Задачи Cron указываются в файле под названием crontab:
sudo crontab -eВставьте следующую строчку в конец файла, затем сохраните и закройте его:
Шаг 0. подготовка
Перед тем, как приступить к работе, вам нужно убедиться в нескольких вещах.
У вас должен быть установлен сервер на Ubuntu 16.04, и создан пользователь (не root), для которого настроены sudo привилегии. Узнать, как это сделать, вы можете, следуя руководству по первичной настройке сервера на Ubuntu 16.04.
Вы должны быть владельцем доменного имени, для которого планируется использовать сертификат, или иметь доступ к его настройке. Если у вас нет зарегистрированного доменного имени, вы можете сделать это, используя один из регистраторов (например, Namecheap или GoDaddy).
