Предисловие
Добро пожаловать, уважаемые читатели!
В одном из своих циклов статей, я реализовывал возможность обращаться к различным сервисам через поддомены.
В последней статье про Plex один из читателей поинтересовался, а почему не завести все запросы с http(80) и https(443) на единый nginx?
Павел:
Уважаемый автор, статья отличная, но как новичку мне не совсем понятен вопрос с веб-сервером nginx: его назначение, необходимость установки в каждый контейнер – неужели нельзя его сделать единым на все контейнеры с Transmission и Plex’ом? Напишите об этом поподробнее здесь как дополнение или же вообще отдельной статьёй с упором на практическое применение в домашней сети!
Собственно, «а почему нет?» и я решил изменить подход, прикрутив SSL на https(443). Браузеры нынче очень не любят непонятные сертификаты для https. Меня это раздражало в Proxmox, он работает на https по умолчанию, но сертификаты не доверенные.
Вот тот самый цикл статей:
Подготовка
Для того, чтобы все завести на один Nginx, я решил запустить отдельный LXC контейнер.
Ставим необходимое в контейнере. (Как поставить LXC контейнер, можно найти в цикле статей)
apt install nginx git -y
Клонируем файлы клиента Certbot
git clone https://github.com/certbot/certbot /opt/letsencrypt
ln -s /opt/letsencrypt/certbot-auto /usr/bin/certbot
Certbot — это клиент протокола ACME, который устанавливается на конечном сервере и используется для запроса сертификата, валидации домена, установки сертификата и дальнейшего автоматического продления сертификатов от Let’s Encrypt.
Тут я хочу остановится подробнее.
Я поставил себе задачу, чтобы можно было через поддомены открывать свои сервисы, как в локальной сети, так и из интернета.
Для этого необходимо будет перенаправить 80 и 443 порты на данный контейнер. Но об этом чуть позже.
Let’s Encrypt обычно требует, чтобы ваш IP адрес на который назначен домен или поддомен был доступен из вне, но т.к. у меня вся сеть закрыта Firewall-ом роутера возникают сложности. Можно было бы найти IP адреса сервисов Let’s Encrypt, но это не благодарное занятие.
Помочь в этой ситуации может Wildcard сертификат.
https://ru.wikipedia.org/wiki/Wildcard-сертификат
Wildcard-сертификат — сертификат открытого ключа, который может использоваться с несколькими подобластями домена.
Поддерживается только один уровень поддоменов! Т.е. *.example.com позволит поддерживать поддомены first.example.com, second.example.com и т.д., а вот для once.first.example.com данный сертфикат уже работать не будет.
При этом можно создать сертификат для поддомена второго уровня: *.first.example.com
В этом случае сертификат будет работать для любых поддоменов второго уровня: one.first.example.com, two.first.example.com и .т.д.
Let’s Encrypt реализовал возможность получения Wildcard сертификата в марте 2018 года (14 марта 2018)
Я буду получать сертификат для поддомена первого уровня, а все сервисы повешу на поддомены второго уровня и мне не придется получать сертификаты для каждого сервиса по отдельности.
У меня есть хостинг и управление доменом я веду на нем. Чтобы была возможность заходить на поддомены сервисов, вам необходим основной домен доступный из интернета.
Для домена на своем хостинге нужно создать основной поддомен, для примера я возьму такой:
home.gregory-gost.ru
Запускаем certbot для получения сертификата.
certbot certonly —agree-tos -d home.gregory-gost.ru -d *.home.gregory-gost.ru —preferred-challenges dns —manual —server https://acme-v02.api.letsencrypt.org/directory —manual-public-ip-logging-ok
Certbot будет выдавать такие сообщения. У меня было два таких.
Нужно занести обе TXT записи в DNS настройки основного домена. Также добавить/заменить А запись, своим статическим IP роутера, в поддоменах.
Сертификаты будут лежать по пути
/etc/letsencrypt/live/home.gregory-gost.ru/
Далее создаем поддомены второго уровня для сервисов: plex.home.gregory-gost.ru и т.д.
В Cron появится файл автоматической проверки и продления сертификата.
Проверим это правило:
# /etc/cron.d/certbot: crontab entries for the certbot package
#
# Upstream recommends attempting renewal twice a day
#
# Eventually, this will be an opportunity to validate certificates
# haven’t been revoked, etc. Renewal will only occur if expiration
# is within 30 days.
#
# Important Note! This cronjob will NOT be executed if you are
# running systemd as your init system. If you are running systemd,
# the cronjob.timer function takes precedence over this cronjob. For
# more details, see the systemd.timer manpage, or use systemctl show
# certbot.timer.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
0 */12 * * * root test -x /usr/bin/certbot -a ! -d /run/systemd/system && perl -e ‘sleep int(rand(43200))’ && certbot -q renew
Все вроде бы хорошо, за одним исключением. Можно попроще и после обновления сертификатов хорошо бы автоматически перезагрузить Nginx.
И это можно сделать отредактировав конфигурационный файл Certbot для нашего домена.
Файл конфигурации лежит по пути: /etc/letsencrypt/renewal/home.gregory-gost.ru.conf
Для того, чтобы выполнить какую-либо команду ДО или ПОСЛЕ обновления сертификатов у Certbot есть специальные ключи
- —pre-hook — выполнять команду перед запуском certboot
- —post-hook — выполнять команду после запуска certboot
- —renew-hook — выполнять команду только после успешного продления сертификата
Делаем проверку на продление сертификата проще.
Удаляем или комментируем строки в файле /etc/cron.d/certbot и копируем файл в /etc/cron.weekly
cp /etc/cron.d/certbot /etc/cron.weekly/
chmod +x /etc/cron.weekly/certbot
#!/bin/bash
/usr/bin/certbot -q renew
Если при обновлении сертификата возникают ошибки, то выпустите сертификат заново.
Далее настраиваем nginx.
Файлы конфигурации nginx
Другие сервисы по аналогии.
Перенастройка локальных доменных зон
Само собой необходимо изменить основной IP адрес для доменных зон в bind9
Открываю зону прямого просмотра и редактирую
Окрываю зону обратного просмотра и также редактирую
На примере роутера MikroTik приведу правила перенаправления 80 и 443 порта:
/ip firewall nat
add action=dst-nat chain=dstnat comment=»HTTP(S) to LXC» dst-port=80 in-interface-list=Internet protocol=tcp src-address-list=»Access IP» to-addresses=192.168.88.14 to-ports=80
add action=dst-nat chain=dstnat dst-port=443 in-interface-list=Internet protocol=tcp src-address-list=»Access IP» to-addresses=192.168.88.14 to-ports=443
Соответственно src-address-list=»Access IP» это список разрешенных адресов прошедших PortKnocking.
На этом можно закончить, все должно работать.
У меня точно работает 🙂
Как это работает?
Немного расскажу, как это работает с точки зрения обычного пользователя. Т.е. тут не будет каких-то объемных технических подробностей по работе DNS или Nginx.
Опишу два примера, один это запрос с устройства из локальной сети, а второй это запрос с устройства откуда-то из интернета.
Запрашивать буду доменное имя:
— plex.home.gregory-gost.ru
Пример запроса домена с устройства в локальной сети
Давайте посмотрим, что происходит в первом случае:
- Мы на локальном устройстве с IP адресом 192.168.88.40 пытаемся открыть в браузере WEB интерфейс Plex Media Server
- Т.к. мы запросили доменное имя, то необходимо распознать это имя в IP адрес. В локальной сети всем устройствам выдаются DNS адреса 192.168.88.7 и 192.168.88.1
Это означает, что первый DNS запрос попадет на IP 192.168.88.7 на котором у нас в свою очередь работает DNS сервер BIND9 - IP 192.168.88.14 в свою очередь привязан к LXC контейнеру на котором установлен Nginx.
Nginx слушает стандартные WEB порты 80 и 443. Наш запрос приходит на 80 порт т.к. мы указали http: и не указывали принудительно https: - В результате, в окне браузера под адресом plex.home.gregory-gost.ru мы видим тоже самое, что увидели бы при прямом заходе на https://192.168.88.8:32400/web/index.html
Единственное, мы через Nginx дополнительно подключили сертификат SSL, поэтому мы можем спокойно использовать https: вместо простого http:
Пример запроса доменного имени с устройства из сети интернет
Давайте посмотрим, что происходит во втором случае:
- Мы на каком-то устройстве с динамическим рандомным IP адресом пытаемся открыть в браузере WEB интерфейс Plex Media Server, например сидя в кафе или у друзей.
- Т.к. мы запросили доменное имя, то необходимо, все также, распознать это имя в IP адрес. Только делать это будет уже сервис, где мы проводили регистрацию домена, по другому это еще называется «парковка» домена.
Чтобы запрос корректно обрабатывался в панели администрирования необходимо добавить все необходимые поддомены по аналогии с локальной реализацией.
Отличием будет, удобное добавление через панель управления сервиса и необходимость указывать статический IP адрес, выданный нашему роутеру провайдером.
Например у меня домен обслуживает хостинг провайдер, у которого также обслуживается сам сайт и есть удобная панель управления. У разных хостеров и регистраторов разные панели управления!
Список всех поддоменов основного доменаБазовый поддомен для домашних локальных сервисов
Поддомен второго уровня для отдельного сервиса
- При вводе доменного имени, запрос так или иначе попадет к нашему хостеру и его DNS служба перенаправит нас на указанный, в «A» записи, IP адрес и порт.(стандартно — http: 80 и https: 443)
- Т.к. мы указываем в «А» записи, статический IP адрес нашего роутера, то запрос попадет на роутер. Тут-то и необходимо правило перенаправления 80 и 443 порта.
Но перенаправлять мы будем уже не на BIND9, а сразу на LXC контейнер с Nginx с адресом 192.168.88.14. BIND9 в этом случае не требуется т.к. запрос идет извне нашей локальной среды. - Далее обработка идет по аналогии с первым случаем.
Надеюсь мне удалось объяснить принцип взаимодействия с доменными именами, как из локальной сети, так и из глобальной интернет среды.
Заключение
Вот таким не хитрым способом можно уйти от использования IP адресов для своих сервисов в локальной домашней или офисной сети. Заходить по одному домену, как из внешних сетей, так и внутри локальной сети.
На последок, одно важное замечание!
Благодарю за ваше время!
Всего хорошего на просторах Интернета 😉
Выразить благодарность автору
Если Вам не безразлична судьба блога или Вы просто хотите отблагодарить Автора за его труд, смело переходите на страницу Поддержки, там описана вся информация, по тому, как это сделать. Заранее благодарен вам за данную инициативу!
- Как заставить видеть сайт по домену в локальной сети
- Доступ к локальному серверу по доменному имени
- Настройка зоны DNS для доступа к серверу из локальной сети по имени домена
- Свой домен в локальной сети
- Доступ к компьютерам по именам
- Как настроить доменную сеть
UPD 05.01.2020:
Добавлен блок «Как это работает?» для более лучшего понимания процесса запрос-ответ.
В этой статье расскажу, как получить SSL сертификат бесплатно — подобрала для вас четыре сервиса, которые выдают такие сертификаты, и подскажу еще один не самый очевидный способ. Заодно разберемся, какие вообще бывают сертификаты, зачем они нужны и подойдет ли бесплатный вариант вашему бизнесу.
- Что такое SSL сертификат
- Для чего нужен SSL сертификат
- Какие бывают SSL сертификаты
- Кому подойдет бесплатный SSLсертификат
- Где получить SSL сертификат бесплатно
- Free SSL Space
- У хостинг-провайдера или регистратора доменных имен
- Как получить SSL сертификат бесплатно и зачем он нужен: что стоит запомнить
Что такое SSL сертификат
Вы наверняка замечали, что у сайтов в начале адреса стоит либо http://, либо https://. Буква s во втором варианте означает наличие у сайта SSL сертификата — это подтверждение, что пользователь и сайт будут обмениваться данными в зашифрованном виде. В этом случае данные все равно можно перехватить, но без ключа из сертификата их будет невозможно расшифровать. Вместо информации по кредитке воришка получит хаотичный набор данных.
Наличие SSL сертификата можно понять по значку замка в адресной строке:
Знак замка в адресной строке означает, что у сайта есть SSL сертификат
Если сертификата нет, браузеры предупреждают об опасности сайта: что злоумышленники могут перехватить данные, которые пользователи оставляют на сайте, например, адрес почты или номер банковской карты. Это может выглядеть как зачеркнутый замочек:
Знак незащищенного соединения в браузере Mozilla Firefox
Или текстовое предупреждение:
Знак незащищенного соединения в Google Chrome
Для чего нужен SSL сертификат
Во-первых, SSL сертификат поможет защитить ваших пользователей от мошенников. Какие варианты обмана могут быть:
- Злоумышленник просто заберет данные пользователей из потока данных и будет использовать их в своих целях.
- Более активное вмешательство — злоумышленник сможет изменить данные. Например, вы будете переводить платеж, а он поменяет счет получателя и сумму, и все ваши деньги уйдут к нему.
Во-вторых, пользователь будет спокоен — он увидит значок замка и будет чувствовать себя в безопасности.
В-третьих, получение SSL сертификата положительно скажется на ранжировании сайта поисковиками. Это знак, что вы заботитесь о безопасности пользователей, и повод для системы разместить вас повыше в выдаче.
Какие бывают SSL сертификаты
Есть разные виды SSL сертификатов. Они могут отличаться по количеству доменов и субдоменов, для которых они могут использоваться. Например, мультидоменные сертификаты могут защищать два, три или пять доменов. Сертификат с опцией wildcard распространяется на все субдомены указанного в сертификате домена.
Также сертификаты различаются по тому, как именно сайт будет проверяться. Тут есть три варианта:
- Уровень организации — OV SSL (organization validation). Проверяется не только сайт, но и его принадлежность конкретной компании, эта информация будет отображаться в сертификате. Срок выпуска: до 3 дней.
- Расширенный уровень — EV SSL (extended validation). Проверяется не просто домен и его принадлежность к компании, но и работа самой компании: разрешение на деятельность, налоговая отчетность и прочие документы. Он самый крутой: в адресной строке будет зеленым шрифтом написано еще и название организации. Срок выпуска: до 2 недель.
И, наконец, есть несколько доверенных центров, которые выпускают сертификаты — например, Thawte, Sectigo, Geotrust, GlobalSign и другие. Их продукты отличаются уровнем защиты и различными дополнительными функциями.
Кому подойдет бесплатный SSLсертификат
В большинстве случаев бесплатно вы можете получить только SSL сертификат низшего уровня, то есть с подтверждением домена — DV. Это значит, что вариант с бесплатным SSL сертификатом подойдет только для небольших сайтов, которые не просят у пользователя «опасных» данных вроде номера кредитки. Например, это:
- личный блог;
- сайт-визитка;
- сайт-витрина.
Для интернет-магазинов и прочих сайтов, которые запрашивают у пользователя финансовые и/или деликатные личные данные, лучше получать SSL сертификаты следующих уровней.
Где получить SSL сертификат бесплатно
Нашла для вас пять способов получить SSl сертификат без затрат.
Let’s Encrypt
Эта некоммерческая организация выдает бесплатные SSL DV сертификаты со сроком жизни три месяца. Можно получить wildcard-сертификат.
Free SSL Space
Еще одна некоммерческая организация, которая также выдает 90-дневные DV сертификаты. Отличается от Let’s Encrypt совместимостью: как заявляет компания, их сертификаты поддерживаются на 99,99% устройств. Нет опции wildcard.
ZeroSSL
У этого сервиса есть бесплатный тариф — DV сертификат на 90 дней. Как и Free SSL, заявляют о 99,99% совместимости с серверами, браузерами и устройствами, однако на бесплатном тарифе не поддерживается wildcard.
Это условно-бесплатный способ получить SSL сертификат. Если вы только собираетесь заводить сайт или ищете новый хостинг — рассмотрите предложения, где бонусом идет сертификат.
Регистратор доменных имен предлагает бесплатный SSL сертификат при покупке имени
Как получить SSL сертификат бесплатно и зачем он нужен
SSL сертификат — это инструмент, который переключает ваш сайт в защищенный режим https. Благодаря ему все данные, которыми вы обмениваетесь с пользователями, будут надежно зашифрованы, а ключ к расшифровке будет только у вас.
Благодаря SSL сертификату:
- злоумышленники не смогут воспользоваться данными пользователей;
- люди будут больше доверять сайту, видя замочек в адресной строке;
- есть шанс подняться в поисковой выдаче.
Сертификаты бывают трех уровней:
- DV — для подтверждения домена. Обычно только этот уровень можно получить бесплатно.
- OV — для подтверждения домена и компании-владельца.
- EV — для расширенного подтверждения домена и компании-владельца.
Бесплатный SSL сертификат уровня DV выдают несколько сервисов:
- Let’s Encrypt — на 90 дней, можно получить на несколько доменов.
- Free SSL Space — на 90 дней, можно получить на несколько доменов.
- ZeroSSL — на 90 дней, только один домен в сертификате.
Также можно обзавестись SSL в качестве бонуса, когда вы покупаете услуги хостинг-провайдера или доменное имя.
Обеспечьте безопасность своим клиентам и себе! Обзаведитесь SSL сертификатом, чтобы никто не украл данные пользователей, а для безопасных рассылок через email, SMS, push, Viber и чат-боты используйте SendPulse.
Что такое HTTPS
Для того, чтобы объяснить, что такое HTTPS, обратимся к истокам.
Большая часть запросов в интернете проходит по протоколу HTTP. Его придумали еще в 90-х годах для передачи текстов с гиперссылками (документы, в которых вшиты ссылки для перехода к другим документам). Аббревиатура HTTP расшифровывается как HyperText Transfer Protocol.
Сайт — это по сути своей документ, который состоит из файлов: текста, картинок, видео и так далее. При помощи HTTP браузер просит сервер отправить данные разного формата для отображения страницы.
Для того, чтобы его открыть, протокол HTTP подходил идеально. За исключением одного «но» — его использование не подразумевает шифрование данных. То есть, пока запрос идет от клиента (вас) к серверу и обратно, к информации о вас и о вашем запросе могут иметь доступ посторонние, например, интернет-провайдер или злоумышленники.
В целях повышения безопасности в интернете компания Netscape Communications в 2000-м году выпустила расширение протокола HTTP — HTTPS (HyperText Transfer Protocol Secure). При использовании HTTPS данные передаются поверх криптографических протоколов SSL или TLS и зашифровываются. Для того, чтобы сайт мог работать по протоколу HTTPS, на домен должен быть выпущен и установлен SSL-сертификат.
Что такое SSL/TLS
Перейдем к понятию SSL/TLS. SSL — это сертификат, который подтверждает подлинность веб-сайта. Аббревиатура переводится как Secure Sockets Layer.
SSL-сертификат подтверждает ваш домен или организации и позволяет установить безопасное соединение. Он содержит индивидуальный ключ вашего домена, с помощью которого информация между сервером и клиентом (вами) зашифровывается.
Протокол SSL был выпущен более 25 лет назад компанией NetScape в нескольких версиях, но ни одна из них не могла полностью обеспечить безопасность данных пользователей. Поэтому в 1999 году компания IEFT создала новую версию сертификата — TLS (Transport Layer Security), которая смогла решить проблемы предшественника. Первые версии протокола сейчас не актуальны, но TLS-соединение 2008 и 2018 года все еще используются в наши дни.
Интересно, что компания IEFT не могла использовать в названии аббревиатуру SSL по юридическим причинам (права на имя принадлежали NetScape), но в обиходе мы до сих пор чаще используем именно название первого протокола.
Правильная настройка работы на вашем сайте SSL-сертификата — это гарантия, что данные между пользователем и веб-сайтом или двумя системами зашифрованы. К таким данным относятся имена, адреса, номера телефонов, номера банковских карт и другая информация. SSL не позволяет сторонним пользователям, в том числе и злоумышленники, воспользоваться ими.
Как работает SSL
SSL-сертификат позволяет установить TLS-соединение с сервером, которое работает по следующей схеме:
Схема работы SSL-сертификата
Все шаги для подключения по безопасному соединению занимают миллисекунды.
Сценарий подключения по TLS-соединению возможен, если сервер воспринимает ваш сертификат как действительный. Если же ваш сертификат невалиден, то вы не сможете подключиться к сайту по безопасному соединению. Невалидным может считаться сертификат, срок действия которого истек. Ошибку также может вызвать самоподписной сертификат. Браузеры принимают только сертификаты, которые были выпущены у сертифицированных центров.
Чтобы проверить валидность сертификата вы можете воспользоваться онлайн-ресурсами. Например, с помощью инструмента «Проверка SSL» от 2IP.
Зачем нужен SSL
SSL играет роль и в SEO-оптимизации. Google и Яндекс учитывают наличие валидного сертификата и работу сайта по HTTPS как один из факторов ранжирования сайта в поисковой выдаче.
Если ваш сайт работает по HTTP, то рядом с адресной строкой браузеры выводят предупреждение «Не защищено», а значит пользователи будут меньше доверять вашему ресурсу.
Виды сертификатов
DV — Domain Validation — для подтверждения домена. Это значит, что сертификат подтверждает именно домен сайта, а не его владельца. Он показывает, что подключение защищено, и клиент обменивается зашифрованной информацией с сервером.
OV — Organization Validation — для подтверждения организации и домена. Он позволяет проверить не только домен, но и его владельца. Этот сертификат могут получить как физические, так и юридические лица. OV отлично подойдет для социальных сетей, форумов, интернет-магазинов или других ресурсов с приемом платежей.
EV — Extended Validation — для расширенного подтверждения организации и домена. Сертификат с самым высоким уровнем защиты. Рассмотрение его получения на ресурс самый длительный — сертификационная организация проверяет не только владельца, но и регистрационные данные владельца. Предназначен только для юридических лиц. Его могут заказать финансовые организации, страховые компании, корпоративные сайты и другой крупный бизнес.
Сертификаты всех указанных типов обеспечивают шифрование трафика между сайтом и браузером.
Бесплатный SSL-сертификат от Let’s Encrypt
Еще совсем недавно SSL-сертификат можно было либо купить, либо установить самоподписной. Это вызывало ряд проблем: либо его устанавливали на сервера крупный бизнес и сайты с большим потоком посетителей, либо сертификаты не считались браузерами валидными. Это привело к тому, что к большей части сайтов в интернете можно было подключиться только по незащищенному соединению.
Со временем ситуация изменилась. Появилась некоммерческая организация Let’s Encrypt, которая выпускает бесплатные SSL-сертификаты на сайты. Они подходят для небольших информационных сайтов, которые не собирают данные пользователей.
Бесплатный сертификат относится к типу DV (Domain Validation).
Сертификаты Let’s Encrypt отвечают современным стандартам качества: используется 256-битное шифрование симметричным ключом, центр Let’s Encrypt никогда не хранит закрытые ключи на своих серверах, а информация о сертификатах находится в публичном доступе.
Основной минус сертификата от Let’s Encrypt — его действие рассчитано на срок не более 90 дней. Затем его нужно перевыпускать. Сделать это можно как вручную, так и автоматически через планировщик задач Cron. Например у нас можно настроить автоматический перевыпуск сразу в панели. Если вам интересно, вы можете почитать об этом в нашей статье на сайте Beget.
Если вы создаете интернет-магазин, представляете юридическое лицо или планируете собирать данные пользователей, то вы можете установить платный SSL.
Платные сертификаты бывают трех видов (DV, OV, EV).
Их основное преимущество — более высокий уровень защиты данных пользователей и гарантия сертифицированного центра. В случае, если сессионный ключ сертификата будет взломан, то центры обязуются выплатить гарантийную сумму пользователю. При возникновении проблем с сертификатом вы всегда сможете обратиться в техническую поддержку центров, чтобы решить проблему.
Сертифицированные центры (CA)
Итак, если вы решили выпустить SSL-сертификат на ваш сайт, то вы можете обратиться к доверенным сертифицированным центрам (CA, Certification authority). Вот неполный список проверенных центров:
- Let’s Encrypt. Проверенная и надежная организация, которая выдает бесплатные SSL. Проект поддерживают материально многие крупные IT-компании, чтобы интернет стал безопаснее.
- GlobalSign by GMO. Один из самых крупных сертифицированных центров. GlobalSign выпускают SSL-сертификаты с 1996 года. Центру доверяют такие компании, как Microsoft, Netflix, Airbnb.
- Sectigo (бывший Comodo). Также один из самых авторитетных центров для получения сертификата. К сожалению, в данный момент не работает на территории РФ.
- Symantec. Компания выпускает большое количество продуктов для IT-сферы, которые признают по всему миру, уже около 30 лет. Не выдают сертификаты пользователям из РФ.
При выборе сертифицированного центра важно обращать внимание на его достоверность. Популярные браузеры регулярно проверяют качество сертификатов от разных сервисов. В случае нарушения правил безопасности, сертификаты от некоторых компаний становятся несовместимыми с браузером.
Выпуск SSL-сертификата через хостинг
Другой способ выпустить сертификат – обратиться к своему хостинг-провайдеру. Обычно хостинг-провайдеры становятся партнерами с сертифицированными центрами.
Выпуск сертификата у вашего провайдера значительно упрощает процесс, ведь вы можете заказать, установить и настроить его в одном окне.
Кликнув на иконку щита, вы перейдете на страницу для выпуска или установки сертификата.
Важно, что SSL-сертификат выпускается со стороны сервера, на котором он находится. Поэтому для выпуска SSL вам нужно обращаться к хостингу, на котором расположены файлы вашего сайта.
Вот и все!
Несколько простых шагов и на вашем сайте установлен SSL-сертификат.
Настройка редиректа на HTTPS
Для того, чтобы ваш сайт работал только по безопасному соединению, вам необходимо настроить редирект страниц вашего сайта на HTTPS. Инструкции по его установке вы можете узнать у своего хостинг-провайдера. Например, в Beget в большинстве случаев вы можете настроить редирект на HTTPS одной кнопкой в Панели управления.
Если же ваш сайт работает через популярные CMS, такие как WordPress, Joomla или Bitrix, то настройка редиректа займет немного больше времени. Вам на помощь придут плагины и дополнительные инструкции.
2. Также вы можете воспользоваться этой инструкцией;
Такие инструкции существуют для всех популярных CMS. Найти вы их сможете в Google или Яндекс по запросу «mixed content» или «смешанное содержимое» с добавлением названия вашей CMS.
Мы считаем, что обеспечить безопасность данных пользователей — важная задача для тех, у кого есть собственные онлайн-ресурсы. Надеемся, эта статья помогла вам разобраться в том, что такое SSL-сертификат, и интернет станет безопаснее
То есть в довесок к халявному сертификату вы ещё получите кучу других полезных плюшек, в том числе и ускорение загрузки, что является одним из факторов ранжирования, существенным или нет — это уже вопрос другой.
Минусы
Третий минус является следствием второго, поскольку при таком принципе возникают проблемы в работе WordPress, он утопает в бесконечных редиректах, от которых спасает плагин. За другие CMS ничего не могу сказать, не проверял и не изучал этот вопрос подробно.
Отличия от других серитификатов
Не совсем корректное сравнение, но тем не менее. Сам по себе сертификат не сильно отличается от того же бесплатного Let’s Encrypt. Ключевым отличием является то, что HTPPS, в случае с сертификатом от Let’s Encrypt, начинает работать сразу же после его установки на сервер и отсутствуют незащищенные участки. Но на этом кончаются преимущества и начинаются проблемы, поскольку сертификат от Let’s Encrypt выдается всего на 3 месяца и необходимо изобретать костыли для автоматического обновления. К слову сказать в ISPmanager уже заложена такая функция и сертификат обновляется автоматически за 7 дней до окончания срока действия.
Как я это делаю
Серые со стрелкой в обход — отключено, оранжевые — включено.
Получение бесплатного SSL сертификата Let’s Encrypt
Тематические термины: Let’s Encrypt, CentOS, Ubuntu
Процесс в данной статье описан на примере систем Linux CentOS, Ubuntu (Debian) и Windows. Настройка выполняется в несколько шагов.
Условия получения бесплатного сертификата от Let’s Encrypt
Прежде чем начать, необходимо знать о некоторых нюансах получения сертификата Let’s Encrypt:
- При запросе выполняется проверка домена. Для этого необходимо:
либо создать TXT-запись в DNS.либо поднять веб-сервер, далее в его корне создается каталог .well-known, а в нем файл с произвольным названием. После корневой центр отправляет запрос серверу на загрузку данного файла и, в случае успеха, выдает сертификаты для указанного доменного имени. - либо создать TXT-запись в DNS.
- либо поднять веб-сервер, далее в его корне создается каталог .well-known, а в нем файл с произвольным названием. После корневой центр отправляет запрос серверу на загрузку данного файла и, в случае успеха, выдает сертификаты для указанного доменного имени.
- SSL-сертификат выдается на 90 дней, поэтому необходимо по расписанию запускать команду на автоматическое продление ключа. Когда проходит 60 дней после начала использования нового сертификата, центр Let’s Encrypt может выдать новый.
- Если выполнять запрос для домена 3 уровня и выше, он должен пройти DNS проверку на всех уровнях. Например, домен layer3.layer2.com должен отвечать на запросы как для layer3.layer2.com, так и для layer2.com.
Проверка домена
Как было сказано выше, для получения бесплатного сертификата, Let’s Encrypt должен удостовериться, что мы являемся владельцем домена. Свое право на его владение мы можем подтвердить, создав специальную TXT-запись или настроив веб-сервис, который будет отвечать на запросы.
Настройка веб-сервера
Данный способ немного сложнее для Linux (для Windows все настройки делает утилита автоматически), но позволяет без проблем настроить автоматическое продление.
Запрашивать сертификат Let’s Encrypt проще всего с веб-сервера, на котором запущен сайт для домена. Возможен альтернативный вариант с монтирование сетевой папки, но его рассматривать не будем.
Linux NGINX
Пример простого конфигурационного файла для NGINX:
Если сервер уже используется для сайта, в секцию server добавляем:
При необходимости выполнять проверку и использовать rewrite/return, добавляем что-то подобное:
После проверяем конфигурацию и перезапускаем nginx:
service nginx reload
Linux Apache
Создаем общий конфигурационный файл, в котором пропишем алиас.
а) для CentOS:
б) для Ubuntu / Debian:
Со следующим содержимым:
Alias /.well-known/acme-challenge/ /var/www/html/.well-known/acme-challenge/
* в данном примере, запросы для страниц /.well-known/acme-challenge всех сайтов мы переводим в каталог /var/www/html/.well-known/acme-challenge.
Проверяем корректность конфигурационного файла:
И перезапускаем apache:
Windows
IIS должен отвечать на http-запрос до доменному имени, для которого мы планируем получить сертификат. Также в его настройках мы должны сделать привязку узла, для которого хотим получить сертификат к конкретному сайту. Для этого в консоли управления IIS раскрываем сайты и выбираем нужный нам (в данном примере, он всего один):
В меню справа кликаем по Привязки:
Изменяем привязку для имеющийся записи и, при необходимости, добавляем еще:
Применяем настройки и закрываем консоль управления IIS.
С помощью записи в DNS
Данный метод проще, описанного выше, но он позволит настроить автоматическое продление сертификата только для некоторых DNS, для которых есть отдельные certbot-плагины. Поэтому данный способ, в большинстве случаев, будет удобен для проведения тестов.
Установка утилиты для получения сертификата
1) Rocky Linux:
dnf install epel-release
2) на CentOS 8:
dnf —enablerepo=PowerTools install certbot
3) на CentOS 7:
yum install certbot
4) на Ubuntu 16.04 и выше, а также Debian:
5) на CentOS 6 или Ubuntu 14.04 / 12.04:
Создадим каталог, в котором будет храниться утилита и переходим в него:
Загружаем утилиту и разрешаем ее запуск:
chmod a+x ./letsencrypt-auto
Для удобства, делаем симлинк:
ln -s /opt/certbot/letsencrypt-auto /usr/local/sbin/certbot
При первом запуске certbot он автоматически предложит доустановить необходимые зависимости — соглашаемся.
LetsEncrypt-Win-Simple для Windows
На сайте GitHub скачиваем win-acme pluggable для нужной разрядности операционной системы:
Раcпаковываем скачанный архив в любую папку.
Первое получение сертификата
1. Если мы подтверждаем право на домен при помощи веб-сервера, выполняем команду с таким синтаксисом:
- certonly — запрос нового сертификата;
- webroot — проверка будет выполняться на основе запроса к корню сайта;
- agree-tos — даем согласие на лицензионное соглашение;
- email — почтовый адрес администратора домена;
- webroot-path — каталог в системе Linux, который является корневым для сайта;
- d — перечисление доменов, для которых запрашиваем сертификат.
а) Пример запроса при использовании веб-сервера NGINX:
б) Пример запроса при использовании веб-сервера Apache:
После успешного выполнения команды, сертификаты будут созданы в каталоге /etc/letsencrypt/archive/dmosk.ru, а также симлинки на них в каталоге /etc/letsencrypt/live/dmosk.ru. При настройке приложений, стоит указывать пути до симлинков, так как при обновлении файлы в первом каталоге будут меняться, во втором — нет. Публичный ключ будет с именем cert.pem, а приватный — privkey.pem.
2. При подтверждении права на домен с TXT-записью:
- certonly — запрос нового сертификата;
- manual — проверка домена вручную.
- preferred-challenges — указывает метод проверки домена.
- agree-tos — даем согласие на лицензионное соглашение;
- email — почтовый адрес администратора домена;
- d — перечисление доменов, для которых запрашиваем сертификат.
На запрос подтверждения отвечаем Y — система выдаст что-то на подобие:
Once this is deployed,
* Данное сообщение говорит, что мы должны создать TXT-запись _acme-challenge.dmosk.ru со значением W2SC9b88y2j2oUjhxVgS7Bphph9g5PqhkBq9KiWkLTm.
Создаем соответствующую запись в панели управления DNS, и в консоли сервера нажимаем Enter для продолжения. Если, как в данном примере, мы запрашиваем сертификат для нескольких узлов, повторяем действия.
Открываем командную строку от администратора и переходим в распакованный каталог. Например, если архив распакован на диск C, выполняем:
* где 2.1.6.773.x64 — моя версия утилиты.
Если запускаем в Powershel, то так:
Утилита формирует бинарный сертификат для Windows, но если мы хотим получить файлы в формате pem, вводим:
wacs.exe —store pemfiles —pemfilespath C:Certificates
* где pemfilespath — путь до каталога, в котором должны оказаться файлы сертификата.
Откроется меню с выбором действия — вводим N, чтобы создать новый сертификат:
Обратите внимание, что в зависимости от версии win-acme, некоторые пункты могут отличаться. Внимательно просмотрите варианты.
Выбираем сайт в IIS, который отвечает на запросы нашего домена (в нашем случае, это единственный Default Web Site, то есть 1):
Если для сайта создано несколько привязок, выбираем 3, чтобы создать сертификаты для всех:
Вводим email адрес и подтверждаем корректность данных:
Утилита создаст необходимый каталог для проверки домена, запросит проверку, получит сертификат, добавит привязку к сайту по 443 порту с добавлением полученного сертификата и создаст в планировщике задание на автоматическое продление сертификата.
Автоматическое продление
Утилита certbot позволяет выполнить обновление сертификата в автоматическом режиме. В зависимости от операционной системы, инструменты различаются.
Смотрим полный путь до скрипта certbot:
Открываем на редактирование cron и добавляем следующее:
Если система вернет ошибку crontab: command not found, устанавливаем пакет cron:
apt install cron
* перавая команда для Deb, вторая — RPM.
а) для Ubuntu / Debian / Rocky Linux:
0 0 * * 1,4 /usr/bin/certbot renew —noninteractive
б) для CentOS:
0 0 * * 1,4 /bin/certbot renew —noninteractive
* в данном примере проверка и продление сертификата будет выполняться по понедельникам и четвергам (1,4) в 00:00. /usr/bin/certbot или /bin/certbot — путь, который мне выдала команда which certbot.
Стоит иметь ввиду, что многие приложения, использующие сертификат, потребуют перезапуска, чтобы перечитать его. Поэтому хорошей идеей будет не просто обновлять сертификат, но и перезапускать сервис, который использует сертификат. Например, для NGINX:
systemctl reload nginx
Однако, нам нужно, чтобы это происходило автоматически. Для этого открываем файл:
И добавляем строку:
Настройка задания на автоматическое продление создается при получении сертификата. Проверить задание можно в планировщике заданий Windows: