- Что такое ssl
- Автоматическая установка в лк
- Виды ssl-сертификатов
- Выбираем главное зеркало
- Генерация ключа по алгоритму диффи-хеллмана
- Генерация сертификата let’s encrypt на сервере
- Использование плагина webroot
- Как выпустить самоподписанный ssl сертификат и заставить ваш браузер доверять ему
- Как заказать ssl сертификата на хостинге?
- Как получить ssl-сертификат
- Как получить бесплатный ssl сертификат lets encrypt?
- Как получить официальный сертификат для сайта
- Как посмотреть информацию о сертификате
- Как устроен ssl-сертификат
- Какой сертификат выбрать физическому и юридическому лицу
- Настраиваем конфигурацию nginx для ssl
- Подключение ssl сертификата, оформленного в другом месте
- Подтверждение бесплатного ssl-сертификата через dns
- Подтверждение по почте
- Получение бесплатного ssl-сертификата через хостинг-провайдера
- Получение сертификата у провайдера
- Проверка правильности установки ssl сертификата
- Ручная установка в панели хостинга
- Сколько сертификатов покупать
- Создаем сниппет конфигурации для ssl-ключа и сертификата
- Создаем сниппет конфигурации с устойчивыми настройками шифрования
- Создание ssl сертификата
- Создание запроса ssl сертификата у ca
- Создание самоподписанного ssl сертификата
- Создание самоподписанного сертификата на сервере
- Установка ssl-сертификата
- Установка ssl-сертификата на сервер
- Файлы сертификата
- Через ispmanager
- Шаг 3. настраиваем tls/ssl на веб-сервере
- Шаг 4. настраиваем файрвол
- Шаг 5. подключаем изменения в nginx
- Шаг 6. настраиваем автоматическое обновление
- Шаг 0. подготовка
Что такое ssl
Здесь все просто. SSL – специальный протокол криптографического типа (проще говоря, с поддержкой шифрования передаваемых данных), обеспечивающий высокий уровень безопасности передачи данных от пользователя к сайту. Дополнительная безопасность передачи данных обеспечивается при помощи аутентификационных кодов, асимметричного криптографического протокола и задействования симметричного шифрования.
Автоматическая установка в лк
Готово, после установки вы получите уведомление на контактный e-mail.
Виды ssl-сертификатов
Различают три вида SSL-сертификатов.
- платные официальные сертификаты, выданные одним из доверенных центров;
- бесплатные сертификаты от Let’s Encrypt;
- самоподписанные (самозаверенные, self-signed certificate).
Выбираем главное зеркало
В используемой CMS открываем настройки сайта. Например, настройки сайта на WordPress выглядят так:
Генерация ключа по алгоритму диффи-хеллмана
Для повышения безопасности вам необходимо сгенерировать ключ по алгоритму Диффи-Хеллмана. Для генерации ключа длиной 2048 бит используйте такую команду:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048Процесс может занять несколько минут.
Генерация сертификата let’s encrypt на сервере
Пользователи услуги VPS и выделенных серверов могут применить специальное программное обеспечение от Let’s Encrypt и создать бесплатный сертификат для сайтов на свой сервер. Также существует механизм автоматического обновления этих сертификатов.
Использование плагина 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 сертификат и заставить ваш браузер доверять ему

Все крупные сайты давно перешли на протокол https. Тенденция продолжается, и многие наши клиенты хотят, чтобы их сайт работал по защищенному протоколу. А если разрабатывается backend для мобильного приложения, то https обязателен. Например, Apple требует, чтобы обмен данными сервера с приложением велся по безопасному протоколу. Это требование введено с конца 2021 года.
На production нет проблем с сертификатами. Обычно хостинг провайдер предоставляет удобный интерфейс для подключения сертификата. Выпуск сертификата тоже дело не сложное. Но во время работы над проектом каждый разработчик должен позаботиться о сертификате сам.
В этой статье я расскажу, как выпустить самоподписанный SSL сертификат и заставить браузер доверять ему.
Чтобы выпустить сертификат для вашего локального домена, понадобится корневой сертификат. На его основе будут выпускаться все остальные сертификаты. Да, для каждого нового top level домена нужно выпускать свой сертификат. Получить корневой сертификат достаточно просто.
Сначала сформируем закрытый ключ:
openssl genrsa -out rootCA.key 2048Затем сам сертификат:
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pemНужно будет ввести
страну
,
город
,
компанию
и т.д. В результате получаем два файла:
rootCA.key
и
rootCA.pem
Переходим к главному, выпуск самоподписанного сертификата. Так же как и в случае с корневым, это две команды. Но параметров у команд будет значительно больше. И нам понадобится вспомогательный конфигурационный файл. Поэтому оформим все это в виде bash скрипта create_certificate_for_domain.sh
Первый параметр обязателен, выведем небольшую инструкцию для пользователя.
if [ -z "$1" ]
then
echo "Please supply a subdomain to create a certificate for";
echo "e.g. mysite.localhost"
exit;
fiСоздадим новый приватный ключ, если он не существует или будем использовать существующий:
if [ -f device.key ]; then
KEY_OPT="-key"
else
KEY_OPT="-keyout"
fiЗапросим у пользователя название домена. Добавим возможность задания “общего имени” (оно используется при формировании сертификата):
DOMAIN=$1
COMMON_NAME=${2:-$1}Чтобы не отвечать на вопросы в интерактивном режиме, сформируем строку с ответами. И зададим время действия сертификата:
SUBJECT="/C=CA/ST=None/L=NB/O=None/CN=$COMMON_NAME"
NUM_OF_DAYS=999В переменной SUBJECT перечислены все те же вопросы, который задавались при создании корневого сертификата (
страна
,
город
,
компания
и т.д). Все значение, кроме CN можно поменять на свое усмотрение.
Сформируем csr файл (Certificate Signing Request) на основе ключа. Подробнее о файле запроса сертификата можно почитать в этой статье.
openssl req -new -newkey rsa:2048 -sha256 -nodes $KEY_OPT device.key -subj "$SUBJECT" -out device.csrФормируем файл сертификата
. Для этого нам понадобится вспомогательный файл с настройками. В этот файл мы запишем домены, для которых будет валиден сертификат и некоторые другие настройки. Назовем его
v3.ext
. Обращаю ваше внимание, что это отдельный файл, а не часть bash скрипта.
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = %%DOMAIN%%
DNS.2 = *.%%DOMAIN%%Да, верно, наш сертификат будет валидным для основного домена, а также для всех поддоменов. Сохраняем указанные выше строки в файл
v3.ext
Возвращаемся в наш bash скрипт. На основе вспомогательного файла v3.ext создаем временный файл с указанием нашего домена:
cat v3.ext | sed s/%%DOMAIN%%/$COMMON_NAME/g > /tmp/__v3.extВыпускаем сертификат:
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days $NUM_OF_DAYS -sha256 -extfile /tmp/__v3.extПереименовываем сертификат и удаляем временный файл:
mv device.csr $DOMAIN.csr
cp device.crt $DOMAIN.crt
# remove temp file
rm -f device.crt;Скрипт готов. Запускаем его:
./create_certificate_for_domain.sh mysite.localhostПолучаем два файла:
mysite.localhost.crt
и
device.key
Теперь нужно указать web серверу пути к этим файлам. На примере nginx это будет выглядеть так:

Запускаем браузер, открываем https://mysite.localhost и видим:

Браузер не доверяет этому сертификату. Как быть?
Нужно отметить выпущенный нами сертификат как Trusted. На Linux (Ubuntu и, наверное, остальных Debian-based дистрибутивах) это можно сделать через сам браузер. В Mac OS X это можно сделать через приложение Keychain Access. Запускаем приложение и перетаскиваем в окно файл mysite.localhost.crt. Затем открываем добавленный файл и выбираем Always Trust:

Обновляем страницу в браузере и:

Успех! Браузер доверяет нашему сертификату.
Сертификатом можно поделиться с другими разработчиками, чтобы они добавили его к себе. А если вы используете Docker, то сертификат можно сохранить там. Именно так это реализовано на всех наших проектах.
Делитесь в комментариях, используете ли вы https для локальной разработки?
Максим Ковтун,
Руководитель отдела разработки
Как заказать ssl сертификата на хостинге?
Сразу скажу, что у данного способа создания SSL сертификата есть целых три преимущества над остальными, благодаря чему я настоятельно рекомендую воспользоваться им большинству людей.
Во-первых, сгенерировать SSL сертификат данного типа сможет даже ребёнок: не нужно скачивать и запускать какие-то утилиты, а также вникать в тонкости того, как установить SSL сертификат на сервер.
Всё, что от вас потребуется — просто ввести нужную информацию о сайте и свои персональные данные. Создание и установка SSL сертификата на сайт произойдёт автоматически.
Во-вторых, по сравнению с заказом SSL сертификата у официальных регистраторов, хостинг-провайдеры, которые выступают посредниками, часто вводят различные акции и бонусы, в результате чего сертификат можно приобрести со существенной скидкой или вообще бесплатно.
Официальные регистраторы, насколько я знаю, таким покупателей не балуют.
В-третьих, по сравнению с бесплатными сертификатами, коммерческие имеют бОльший срок действия. Их можно оформлять на год и дольше, в то время, как бесплатные действуют в течении считанных месяцев, из-за чего их нужно постоянно продлевать.
И не дай Бог вам забыть это сделать — пользователи ваш сайт вообще не увидят, а только лишь сообщение об угрозе безопасности на весь экран браузера.
Чтобы сделать заказ, сперва нам нужно зайти в кабинет пользователя через сайт thehost.ua либо по ссылке, содержащейся в письме, сгенерированном при регистрации. После того, как войдёте в систему, выберите пункт бокового меню «SSL сертификаты» и нажмите кнопку «Заказать» вверху страницы.
После проделанных действий на экране появится диалоговое окно, которое выглядит так:
Здесь нам нужно выбрать тип SSL сертификата, который вы хотите купить и срок его действия. Цена услуги, естественно, будет зависеть от этих двух параметров.
Как получить ssl-сертификат
Чтобы начать переезд на защищенное соединение, необходимо приобрести так называемый SSL-сертификат. Свяжитесь со своим хостингом-провайдером – сегодня большинство из них предлагают сертификаты.
Можно также самостоятельно найти бесплатный сертификат или купить профессиональный вариант SSL.
Покупать необходимо такой SSL, который работает для всех страниц сайта, в том числе для второстепенных, а не только для главной. В противном случае пользователь, переходящий по страницам сайта, постоянно будет получать сообщения от браузера о том, что он открывает не защищенную страницу.
Как получить бесплатный ssl сертификат lets encrypt?
Ну, и напоследок я решил оставить обзор способа создания самого нужного и востребованного у большинства вебмастеров варианта SSL сертификата для домена, который существует у TheHost.
Речь идёт о генерации бесплатного SSL сертификата LetsEncrypt, создать который можно за считанные секунды.
Среди его преимуществ можно выделить не только то, что за его оформление вам не придётся платить, но и то, что процедура его выпуска самая быстрая из всех указанных (по крайней мере, у TheHost), т.к. при генерации не придётся указывать абсолютно никакой дополнительной информации, кроме доменного имени сайта, для которого документ будет выпускаться.
Из минусов можно отметить только то, что он выпускается лишь на 3 месяца, после чего его нужно будет продлевать.
Итак, чтобы создать SSL сертификат от Lets Encrypt, заходим на страницу «SSL сертификаты» в ISPManager и нажимаем на кнопку «Lets Encrypt», после чего откроется следующее диалоговое окно:
Выбираем из списка домен, для которого сертификат будет выпускаться, и нажимаем «ОК».
После этого, без всяких лишних вопросов, сертификат добавится в список. Если просмотреть информацию, содержащуюся в нём (нужно выбрать сертификат и нажать на кнопку «Информация»), то можно увидеть следующее:
Как видите, для всех LetsEncrypt SSL сертификатов TheHost указывает абсолютно идентичную информацию, упрощая и ускоряя процедуру их выпуска.
При желании вы можете произвести настройку SSL сертификата и изменить содержащуюся в нём информацию на данном этапе. Кстати, настоятельно рекомендую это сделать, т.к. этот шаг повысит ваше доверие у ваших пользователей, которые решат просмотреть данные сертификата.
Отсутствие персональных данных владельца в нём может серьёзно насторожить их, а для некоторых может даже послужить сигналом отказа от использования данного сайта.
Как получить официальный сертификат для сайта
Для большинства сайтов будет достаточно установить SSL-сертификат начального уровня с проверкой домена (DV-сертификаты, от английского Domain Validation).
Время выдачи таких сертификатов занимает лишь несколько минут.1. Зайдите в наш каталог и выберите надежную компанию, предлагающую SSL-сертификаты.2. Зарегистрируйтесь на сайте компании и укажите информацию о себе.3. Подтвердите, что именно вы являетесь владельцем домена.4. Создайте запрос на получение сертификата.5. SSL-сертификат будет сгенерирован автоматически.
Есть несколько способов подтверждения владения доменом:
Как посмотреть информацию о сертификате
Если сайт использует SSL-сертификат, то знак “замок” в адресной строке браузера будет закрыт. Если сертификата нет, то открыт.
Браузер предоставляет пользователю полную информацию о применяемом на сайте SSL-сертификате.
1. Чтобы просмотреть ее в браузере Google Chrome, нажмите на значок в начале адресной строки браузера.
2. Выберите в меню пункт “Сертификат”.
3. Открывшееся окно покажет всю информацию о сертификате:
- для какого домена создан;
- название выпустившей сертификат организации;
- срок действия сертификата.
4. Специалисты могут просмотреть дополнительную техническую информацию о сертификате и участвовавших в его выпуске организациях в закладках “Details” и “Certification Path”.
Как устроен ssl-сертификат
SSL (англ. Secure Sockets Layer переводится как “слой защищенных подключений”) – это криптографический протокол, который создан для безопасного обмена и хранения информации на сайтах.
Официальные SSL-сертификаты распространяются в виде набора текстовых файлов – ключей. SSL-сертификаты различаются по используемому методу проверки прав владельца на его выпуск. Самый простой вариант – это проверка прав владения доменом. В более сложных вариантах сертификатов, которые обеспечивают защиту инфраструктуры целого предприятия, нужна проверка информации о компании.
Цифровой сертификат содержит следующую информацию:
- назначение сертификата об обеспечении безопасного соединения между браузером и сервером;
- доменное имя, на которое оформлен SSL-сертификат;
- юридическое лицо, которое владеет сертификатом;
- физическое местонахождение владельца сертификата (город, страна);
- дату выдачи и дату окончания действия сертификата;
- название удостоверяющего центра сертификации;
- используемый алгоритм шифрования;
- публичный ключ, применяемый сервером.
Эта информация позволяет браузеру клиента:1. Проверить достоверность сертификата.2. Установить, что он был выпущен доверенной организацией специально для конкретного домена.3. Сделать вывод, что устанавливаемое с сервером соединение – безопасное.
Какой сертификат выбрать физическому и юридическому лицу
Если сайт посвящен вашему хобби и не является коммерческим, а домен зарегистрирован на физическое лицо, вы можете установить абсолютно любой, даже платный сертификат.
Сайты коммерческих компаний, которые хотят повысить доверие в глазах Google и «Яндекса», должны использовать OV- или EV-сертификаты.
OV-сертификат получить могут только юридические лица после прохождения идентификациии.
ЕV-cертификат похож на OV-сертификат, но для получения EV-сертификата компании придется пройти расширенную валидацию (проверку всех сведений и данных). Сайты, получившие EV-сертификат, получают зеленую полосу чуть правее иконки замка, а также там выводится полное наименование компании и данные о ней.
OV-сертификат и ЕV-cертификат могут получить только официальные организации с историей. При этом сертифицирующий центр проверяет не только данные о компании на сайте, включая адрес и телефон, но и права на домен. Разница в стоимости этих SSL-подписей минимальная. Если компания крупная и планирует расширяться, лучше выбирать EV-сертификат.
Сотрудники Google говорят, что именно OV- или EV-сертификат гарантирует компаниям и другим коммерческим предприятиям приоритетные позиции в поисковой выдаче. Оба вида сертификатов стоят дороже, чем простые платные SSL-сертификаты.
- Сертификат типа OV – от 8 тыс. р. за год;
- сертификат типа EV – от 10 тыс. р. за год;
- сертификат типа Wildcard – от 18 тыс. р. за год.
Настраиваем конфигурацию 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 сертификата, оформленного в другом месте
Если же вам по какой-то причине не подошли сертификаты или их стоимость от TheHost, и вы заказали SSL сертификат в другом месте, но у вас есть сайт, расположенный на данном хостинге, то вы можете подключить свой сертификат к имеющемуся сайту.
Сделать это можно в том же диалоговом окне, которое использовалось для создания самоподписанного SSL сертификата.
Только для добавления на сервер TheHost существующего документа нужно будет в поле «Тип сертификата» выбрать значение «существующий», после чего всё диалоговое окно примет следующий вид:
Вводим информацию, содержащуюся в вашем готовом SSL сертификате для домена, в соответствующие поля и нажимаем «ОК».
Если у вас возникнут трудности при добавлении данного документа, то вы всегда сможете обратиться к технической поддержке TheHost для консультации.
Подтверждение бесплатного ssl-сертификата через dns
На этапе выбора подтверждения кликаем на «DNS», где получаем нужные данные для ввода.
На следующем шаге видим, что система мониторит записи для подтверждения.
Переходим к хостинг-провайдеру (или другой интерфейс, куда через NS был делегирован домен) и переходим к редактированию DNS.
Добавляем новую TXT-запись.
Вводим выданные нам значения.
Подтверждение по почте
В этом случае система предложит написать на одну из почт:
В этом случае будет отправлено письмо с кодом на указанный электронный адрес, через которое можно будет подтвердить информацию.
В этом случае лучше всего:
Если указанной почты нет среди аккаунтов, то следует ее создать, например, в интерфейсе Яндекс.Коннекта это выглядит так:
Отправляем письмо для проверки.
В системе видно, что сообщение отправлено.
Далее приходит письмо на почту, где нужно скопировать проверочный код и перейти на страницу верификации.
На проверочной странице вводим ключи и нажимаем на «Next».
Закрываем страницу.
В ZeroSSL обновляем статус заявки.
Видим, что все прошло успешно и кликаем на «Install Certificate».
Скачиваем бесплатный SSL-сертификат через кнопку «Download Certificate (.zip).
При необходимости можно сказать в разных форматах, например, для:
- Apache;
- AWS;
- cPanel
- NGINX;
- Ubuntu;
- И многих других.
Далее переходим к установке его на сервер.
Важно! Одни аккаунт может иметь до трех доменов с сертификатами бесплатно.
Получение бесплатного ssl-сертификата через хостинг-провайдера
Если хостинг-провайдер предоставляет бесплатный SSL-сертификат, то можно
воспользоваться им. Так его предоставляют:
Например, в случае с Timeweb достаточно посетить
административную панель после чего перейти во вкладку «SSL-сертификаты» и нажимаем на
«Заказать».
Теперь выбираем «Let’s Encrypt»
(бесплатный) и домен, которому он будет применен.
Важно! Для того, чтобы воспользоваться данным методом
необходимо делегировать сайт под управление компании хостинга при помощи А-записи.
Получение сертификата у провайдера
Получить бесплатный SSL-сертификат у провайдера можно в один клик.
Например, у провайдера Beget достаточно просто нажать кнопку “Установить”.
Проверка правильности установки ssl сертификата
После того, как SSL сертификат на сайт установлен и активирован, логическим завершением данного процесса будет проверка наличия ошибок, которые могли возникнуть в процессе.
Они могут быть разнообразны: начиная от несовпадения информации в сертификате с той, которая хранится в центре сертификации, заканчивая ошибками в работе самого сертификата.
Ручная установка в панели хостинга
Чтобы установить SSL-сертификат, войдите в вашу панель управления (ISPmanager, cPanel или Plesk*) и следуйте соответствующей инструкции ниже:
Сколько сертификатов покупать
Если у вас блог, небольшой интернет-магазин или даже полноценный портал, рассчитанный на крупную аудиторию, достаточно будет одного 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 сертификата
Поскольку все сегодняшние действия будут производиться на хостинге TheHost, то сперва нужно создать учётную запись, чтобы они были возможны.
Для этого регистрируемся на сайте thehost.ua, после чего вам на электронную почту придёт письмо с учётными данными пользователя, а также ссылкой на кабинет пользователя и панель управления хостингом.
Как я уже сказал, SSL сертификаты можно создавать разные и различными способами. Начнём с самого простого с технической точки способа, который потребует от вас минимума знаний.
Создание запроса ssl сертификата у ca
Ну, и ещё одной возможностью, доступной в данном диалоговом окне создания SSL сертификата, является генерация запроса на выпуск данного документа в центре сертификации.
Данная возможность вам может пригодиться, как уже говорилось ранее, при заказе SSL сертификата не через своего хостинг провайдера, а через других, в том числе и при обращении в CAнапрямую.
Сгенерировать запрос на выпуск SSL сертификата для домена можно прямо у себя на рабочем компьютере с помощью специальных утилит.
Наиболее распространённой является OpenSSL, которая доступна как под Linux, так и под Windows благодаря CygWin или использованию других эмуляторов консоли Linux (та же самая командная строка Git поддерживает Linux команды или утилита PuTTY).
Также есть масса онлайн генераторов запросов на выпуск SSL сертификата. Вот наиболее популярные из них:
Также, данные генераторы предоставляют все официальные сертифицирующие центры и многие хостинг провайдеры.
Есть такой и у TheHost, который доступен в данном окне.
Чтобы его запустить, выбираем в поле «Тип ключа» значение «Запрос», после чего диалоговое окно примет следующий вид:
Вводим необходимую информацию и нажимаем ОК. После этого на сервере TheHost сгенерируются файлы csr и key, которые вы сможете в дальнейшем использовать для выпуска сертификата.
Создание самоподписанного ssl сертификата
Итак, как сделать заказ генерации SSL сертификата у официальных центров сертификации, я вам показал.
Создание самоподписанного сертификата на сервере
Самоподписанные сертификаты генерируются владельцем сервера и домена самостоятельно. Подходит только для владельцев виртуальных и выделенных серверов под управлением Linux.
Самоподписанные сертификаты:
Но такие сертификаты могут:
Для создания самоподписанного сертификата используется набор инструментов из библиотеки OpenSSL.
Для генерации SSL-сертификата из командной строки используйте команду:
# openssl req -x509 -nodes -newkey rsa:2048 -days 365 -keyout /home/ssl/my_key.key -out /home/ssl/my_cert.crt
Будут запрошены:
- пароль для файла с сертификатом;
- данные о владельце сертификата (страна, город, название организации).
Самый главный параметр, который попросит ввести программа OpenSSL – это Common Name – адрес домена, для которого используется сертификат.
После выполнения данной команды на сервере в каталоге /home/ssl будут сгенерированы файлы сертификата: публичный ключ – в файле my_cert.crt и приватный ключ – в файле my_key.key.
Установка ssl-сертификата
В статье описан процесс установки сертификата на хостинг. Если вы хотите установить SSL на услуги другого типа, воспользуйтесь справочными статьями:
Установка ssl-сертификата на сервер
В первую очередь распаковываем архив с сертификатом и видим, что он состоит из:
- certificate.crt (сертификат);
- private.key (приватный ключ);
- ca_bundle.crt (промежуточный сертификат).
Данный пункт необходим тем, кто не смог получить его у хостера и приобрел его не у своего провайдера. Для этого посещаем раздел «SSL», где выбираем пункт «Установить».
Вводим в соответствующие поля свой файл и завершаем установку.
Важно! Если не имеется навыка работы с интерфейсом хостинг компании (у некоторых провайдеров отсутствует возможность загружать сертификат самостоятельно в интерфейсе) рекомендуется загрузить архив с сертификатом на сервер и написать в поддержку с просьбой об установке.
Важно! Срок действия сертификата 3 месяца, после чего его потребуется
обновиться, выполнив инструкцию еще раз.
Важно! Если сертификат выдается на поддомен, то потребуется
подтвердить лишь основной домен (соответственно загрузить лишь 1 файл или
установить 1 TXT-запись).
Файлы сертификата
После получения сертификата у вас должны появиться следующие файлы в PEM-кодировке:
Через ispmanager
Следует посетить раздел «WWW»-«SSL-сертификаты»,
после чего кликнуть на «Создать».
Выбираем пункт «Существующий».
Ставим данные из файлов в нужные поля и даем имя
сертификату.
Важно! Если не получается воспользоваться ни первым ни
вторым способом или данного раздела (SSL) нет в административной панели (как, например, в SprintHost), то Вы можете
загрузить сертификаты на свой сервер и создать тикет хостинг-провайдеру для
установки.
Шаг 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).
