Что такое 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-соединение с сервером, которое работает по следующей схеме:
Все шаги для подключения по безопасному соединению занимают миллисекунды.
Сценарий подключения по 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-сертификат
Если вы создаете интернет-магазин, представляете юридическое лицо или планируете собирать данные пользователей, то вы можете установить платный 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-сертификата. В Beget вы можете найти ее в разделе «Домены и поддомены». Напротив домена вы увидите щит «SSL».
Кликнув на иконку щита, вы перейдете на страницу для выпуска или установки сертификата.
- Чтобы выпустить бесплатный сертификат достаточно выбрать его тип: обычный (может включать до 39 доменов) или Wildcard (сможет охватить неограниченное количество доменов).
- Для заказа платного сертификата вам нужно выполнить немного больше действий: выбрать тип сертификата (DV, OV или EV) и ввести данные владельца домена. Срок выпуска платного сертификата занимает от 2 дней.
- В последней вкладке «Установка SSL сертификата» вы можете ввести номер и приватный ключ уже имеющегося сертификата, а также выбрать домен, на который вы его устанавливаете.
Важно, что SSL-сертификат выпускается со стороны сервера, на котором он находится. Поэтому для выпуска SSL вам нужно обращаться к хостингу, на котором расположены файлы вашего сайта.
Вот и все!
Несколько простых шагов и на вашем сайте установлен SSL-сертификат.
Настройка редиректа на HTTPS
Для того, чтобы ваш сайт работал только по безопасному соединению, вам необходимо настроить редирект страниц вашего сайта на HTTPS. Инструкции по его установке вы можете узнать у своего хостинг-провайдера. Например, в Beget в большинстве случаев вы можете настроить редирект на HTTPS одной кнопкой в Панели управления.
Если же ваш сайт работает через популярные CMS, такие как WordPress, Joomla или Bitrix, то настройка редиректа займет немного больше времени. Вам на помощь придут плагины и дополнительные инструкции.
2. Также вы можете воспользоваться этой инструкцией;
Такие инструкции существуют для всех популярных CMS. Найти вы их сможете в Google или Яндекс по запросу «mixed content» или «смешанное содержимое» с добавлением названия вашей CMS.
Мы считаем, что обеспечить безопасность данных пользователей — важная задача для тех, у кого есть собственные онлайн-ресурсы. Надеемся, эта статья помогла вам разобраться в том, что такое SSL-сертификат, и интернет станет безопаснее
Однако стоимость их, мягко говоря, завышена. Чтобы создать самоподписанный сертификат, понадобится минут 5 времени, из которых 99% — это ввод данных о домене. Понятно, что компании хотят кушать и поэтому продают их. Бесплатно можно получить лишь при регистрации домена на первый год, это вроде как сыра в мышеловке.
Указанный ниже способ работает, если у вас есть доступ к SSH. Если его нет, то Let’s Encrypt предоставляет бесплатный сертификат только на 3 месяца и придется заморачиваться этим каждый раз.
Let`s Encrupt рекомендует использовать утилиту Certbot. Переходим на сайт утилиты.
К примеру, на моем проекте Электронная сервисная книжка авто веб-сервер Nginx и операционная система Debian 9. Поэтому я выбрал их и далее откроется детальная инструкция по дальнейшим шагам. Если у вас другой веб-сервер или ОС, дальнейшие примеры будут немного отличаться, но шаги будут примерно одинаковыми.
Устанавливаем Certbot
sudo apt-get install certbot python-certbot-nginx
Выбираем, как хотим запустить Certbot
Если хотим, чтобы бот автоматически установил сертификат и отредактировал конфиг Nginx (прописал пути до полученных сертификатов), выполним команду
sudo certbot —nginx
Если же хотим только установить сертификат, а конфиг потом отредактируете самостоятельно, то выполняем
sudo certbot certonly —nginx
Автоматическое продление сертификата
Certbot будет автоматически продлевать сертификат через задания cron или таймер systemd.
Чтобы выполнить тестовый запуск с симуляцией продления выполните команду
sudo certbot renew —dry-run
На этом всё. После этих действий Certbot будет автоматически продлевать сертификат на каждые 3 месяца. А сейчас можно зайти на свой сайт и убедиться, что сертификат уже действует!
На примере odo24.ru заходим на сайт (в моем случае Chrome), нажимаем возле адреса сайта замочек и выбираем пункт Сертификат
То есть в довесок к халявному сертификату вы ещё получите кучу других полезных плюшек, в том числе и ускорение загрузки, что является одним из факторов ранжирования, существенным или нет — это уже вопрос другой.
Минусы
Третий минус является следствием второго, поскольку при таком принципе возникают проблемы в работе 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, а в нем файл с произвольным названием. После корневой центр отправляет запрос серверу на загрузку данного файла и, в случае успеха, выдает сертификаты для указанного доменного имени.
- 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:
nginx -t && nginx -s 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-плагины. Поэтому данный способ, в большинстве случаев, будет удобен для проведения тестов.
Установка утилиты для получения сертификата
Certbot для Linux
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паковываем скачанный архив в любую папку.
Первое получение сертификата
Linux
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 для продолжения. Если, как в данном примере, мы запрашиваем сертификат для нескольких узлов, повторяем действия.
Windows
Открываем командную строку от администратора и переходим в распакованный каталог. Например, если архив распакован на диск 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 позволяет выполнить обновление сертификата в автоматическом режиме. В зависимости от операционной системы, инструменты различаются.
Linux
Смотрим полный путь до скрипта 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.
Команда certbot renew проверяет для всех наших сертификатов срок окончания, и если осталось менее 30 дней, запрашивает новый, сохраняет его в каталоге /etc/letsencrypt/archive/<домен> и обновляет симлинк.
Стоит иметь ввиду, что многие приложения, использующие сертификат, потребуют перезапуска, чтобы перечитать его. Поэтому хорошей идеей будет не просто обновлять сертификат, но и перезапускать сервис, который использует сертификат. Например, для NGINX:
systemctl reload nginx
Однако, нам нужно, чтобы это происходило автоматически. Для этого открываем файл:
И добавляем строку:
Windows
Настройка задания на автоматическое продление создается при получении сертификата. Проверить задание можно в планировщике заданий Windows:
Wildcard
Особенности получения Wildcard от Let’s Encrypt:
- Подтвердить право использования доменом можно только с помощью DNS — таким образом, затрудняется процесс автоматического продления. Нужно использовать плагины, которые позволяют автоматически создавать нужную запись на DNS, но они доступны далеко не для всех поставщиков услуг DNS. В противном случае, обновлять Wildcard нужно вручную.
Также, некоторые панели управления хостингом, например ISP Manager с версии 5 могут управлять процессом получения Wildcard от Let’s Encrypt с возможностью автоматического продления (но необходимо, чтобы домен обслуживался на данном хостинге). - Время действия сертификата также ограничено 3 месяцами.
Certbot
Необходимо, чтобы версия утилиты certbot была 0.22.0 и выше. Проверить текущую версию можно командой:
а) для CentOS / Red Hat:
б) для Ubuntu / Debian:
apt install —only-upgrade certbot
Процесс получения
Процесс очень похож на процесс получения сертификата с подтверждением домена в DNS.
* обратим внимание на 2 детали: 1) мы добавили опцию server, чтобы указать, на каком сервере Let’s Encrypt должна проходить проверка DNS; 2) мы получаем сертификат как для *.dmosk.ru, так и самого dmosk.ru, так как первое не включает второго.
Before continuing, verify the record is deployed.
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
* в данном примере система попросила создать TXT-запись _acme-challenge.dmosk.ru со значением DN8ovKFJ0leLQV9ofZ81mYKxojwIaed5g6f0bXZCYiI.
Заходим в панель управления DNS и создаем нужную запись. Если у нас свой сервер DNS, например, bind, то строка будет такой:
; TXT
_acme-challenge IN TXT DN8ovKFJ0leLQV9ofZ81mYKxojwIaed5g6f0bXZCYiI
Не торопимся нажимать Enter — после настройки DNS нужно немного времени (пару минут), чтобы настройка применилась. Проверить появление записи можно командой с рабочего компьютера:
nslookup -type=txt _acme-challenge.dmosk.ru 8.8.8.8
Как только видим, что настройки применились, нажимаем Enter — если это наш первый запрос Wildcard для данного домена, то система нас попросит создать еще одну запись — повторяем процедуру, создав в DNS вторую запись TXT.
Если все сделали правильно, то увидим:
IMPORTANT NOTES:
— Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/dmosk.ru/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/dmosk.ru/privkey.pem
Your cert will expire on 2019-09-05. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
«certbot renew»
— If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
После получения сертификата мы не сможем экспортировать его с закрытым ключом. Мы можем изменить поведение, открыв файл settings.json в распакованном каталоге win-acme. Находим параметр PrivateKeyExportable и задаем ему значение:
После обновляем сертификат:
.\wacs.exe —renew —force
Или без обновления сертификата мы можем найти файл .pfx в каталоге: %programdata%\win-acme\$baseuri$\certificates.
Пароль для pfx можно найти в интерактивном меню wacs:
Manage Renewals > Show details
Сертификат Let’s Encrypt для почтового сервера MS Exchange
В комплекте установленного нами LetsEncrypt-Win-Simple для Windows идет скрипт ImportExchange.v2.ps1. Он нужен для импорта сертификата в конфигурацию почтового сервера MS Exchange.
Для начала создадим каталог, куда будет выгружен сертификат. В моем примере я воспользуюсь путем C:\SSL.
Допустим, что адрес подключения к серверу будет exchange.dmosk.ru. Тогда получить сертификат и импортировать его в Exchange можно командой:
* данная команда запросит сертификат для узла exchange.dmosk.ru, сохранит нужные файлы в каталоге C:\SSL и импортирует полученные ключи в Microsoft Exchange Server.
Если мы запускаем команду в оболочке PowerShel, клманда должна начинаться с:
После успешного выполнения команды, заходим в консоль управления сервером, переходим на вкладку управления сертификатами. В списке мы должны увидеть полученную последовательность от Let’s Encrypt. Кликаем по ней и назначаем сертификат для нужных служб Exchange (как правило, SMTP, IIS).
Возможные ошибки
Рассмотрим некоторые ошибки, с которыми мы можем столкнуться.
Missing command line flag or config entry for this setting
Ошибка появляется при попытке обновить сертификат для одного или нескольких доменов.
Причина: при обновлении сертификата, утилита certbot ищет настройки в конфигурационном файле /etc/letsencrypt/renewal/<имя домена>.conf. Если в данном файле не будет определена конфигурация для webroot_map, мы получим данную ошибку.
Открываем конфигурационный файл для домена, например:
Находим опцию webroot_map (как правило, в самом низу). Либо она будет пустой, либо указывать на неправильный путь. Исправляем это:
* мы указываем домен и каталог, в котором будет создаваться проверочный файл.
Пробуем обновить сертификат.
ACMEv1 is deprecated and you can no longer get certificates from this endpoint
Ошибка появляется при попытке запросить или обновить сертификат. Полный текст ошибки:
Причина: утилита на компьютере устарела. Она пытается использовать API-портал ACMEv1, который больше не поддерживается.
Решение: обновляем утилиту certbot.
а) Для Ubuntu/Debian:
б) Для Rocky Linux/CentOS:
yum update certbot
Читайте также
Другие полезные материалы:
2. Настройка Apache + SSL для работы сайта по HTTPS.
SSL-сертификат — это цифровой сертификат, удостоверяющий подлинность веб-сайта и позволяющий использовать зашифрованное соединение. Без защищенного соединения сайту будет проблематично продвинуться в поисковых системах и завоевать доверие клиентов. Для небольших веб-проектов, лендингов и блогов отлично подойдет бесплатный SSL-сертификат Let’s Encrypt. В нашей статье мы подробно расскажем, как получить его на виртуальном хостинге и VPS/VDS сервере.
Выпуск и настройка Let’s Encrypt на хостинге
Панель управления IHC
-
Переходим в панель управления хостингом. Во вкладке «Администрирование» находим пункт «Выделенные IP» и нажимаем на плюсик.
-
-
Переходим в раздел «Сайты», напротив нужного веб-ресурса нажимаем «Сменить IP».
-
Выбираем выделенный IP в качестве нового и сохраняем изменения.
-
Возвращаемся в «Управление сайтами» и теперь выбираем пункт «SSL» напротив нужного сайта.
-
Выбираем действие «Let’s Encrypt» и ставим галочку напротив «Редирект на https». Нажимаем «Продолжить».
В течение нескольких минут ваш запрос будет обработан и сайт заработает по защищенному HTTPS-протоколу.
ispmanager
Наши клиенты могут арендовать хостинг с популярной панелью управления ispmanager. Чтобы сгенерировать бесплатный SSL-сертификат в ней, необходимо:
- Зайти в ispmanager (доступы появятся в интерфейсе панели ИХЦ после оплаты и активации услуги).
-
Перейти в раздел WWW ⇒ SSL-сертификаты. Нажать на «Let’s Encrypt».
-
В поле «Домен» выбрать нужный сайт и нажать «Ок».
Убедитесь, что в настройках сайта стоит галочка напротив пункта с перенаправлением на HTTPS. Отлично, все готово.
Выпуск и настройка Let’s Encrypt на VPS
Для удобного получения бесплатного SSL-сертификата на VPS/VDS сервере без панели управления потребуется специальный клиент протокола ACME — Certbot. Он нужен для запроса сертификата, валидации домена, установки и дальнейшего автопродления сертификатов от Let’s Encrypt.
Системные требования для работы Certbot:
- Linux, macOS, BSD и Windows.
- Root-доступ в Linux/BSD. Доступ администратора в Windows.
- Порт 80 открыт.
Мы покажем отдельные инструкции для веб-серверов Apache и Nginx.
Для веб-сервера Apache
Первое, что нужно сделать — установить Certbot. На Certbot есть инструкции под разные дистрибутивы Linux. Например, для установки на Ubuntu 18.04 выполните команды:
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install python-certbot-apache
$ sudo yum install python2-certbot-apache
$ sudo apt-get install python-certbot-apache -t stretch-backports
В первый запуск Certbot будет предложено указать электронную почту для регистрации в Let’s Encrypt и получения уведомлений. Также вам потребуется прочитать и принять условия использования.
После установки можно переходить непосредственно к выпуску Let’s Encrypt. Мы рекомендуем самый простой способ — с помощью специального плагина Apache для выпуска и автоматической установки сертификата.
Плагин получает SSL-сертификат для сайта и автоматически устанавливает его. Обратите внимание, Certbot должен найти корректный виртуальный хост в конфигурации Apache — для этого он будет искать директиву ServerName, которая соответствует домену, для которого вы выпускаете сертификат. Поэтому обязательно убедитесь, что конфигурация веб-сервера настроена корректно.
После окончания установки Let’s Encrypt вы увидите дополнительную информацию, а также ссылку для проверки.
Для веб-сервера Nginx
Мы покажем примеры установки для нескольких дистрибутивов Линукс. С остальными инструкциями вы можете ознакомиться на официальном сайте.
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-nginx
$ sudo yum install python2-certbot-nginx
sudo apt-get install python-certbot-nginx -t stretch-backports
После установки запускаем плагин Nginx:
Обратите внимание, Certbot должен иметь возможность найти корректный блок server в вашей конфигурации. Для этого он будет искать директиву server_name, соответствующую домену, для которого вы запрашиваете SSL-сертификат. Поэтому, как и в случае с Apache, обязательно проконтролируйте, что конфигурация веб-сервера настроена правильно.
Обновление сертификатов
Сразу при установке Certbot добавляет cron-задание для автоматического обновления полученных им сертификатов. Чтобы протестировать автообновление, выполните команду:
sudo certbot renew --dry-run
Команда подходит как для Apache, так и для Nginx.
Заключение
Теперь вы знаете, как получить бесплатный SSL-сертификат Let’s Encrypt на обычном шаред-хостинге с помощью панели управления и на VPS/VDS с помощью Certbot. Являетесь нашим клиентом и остались вопросы? Задавайте их в службу технической поддержки — мы обязательно поможем!
Похожие статьи
-
Сегодня, чтобы создать полноценный работающий сайт, вовсе не обязательно владеть языками программирования и другими специальными знаниями. Для этого давно существуют программные продукты, которые делают всю техническую работу за вас. Конструкторы сайтов и системы управления контентом (CMS) являются простыми и удобными инструментами, позволяющими запустить собственный веб-проект. Их часто сравнивают, но на самом деле оба этих решения эффективны — в разных обстоятельствах. Мы расскажем, чем CMS отличаются от конструкторов сайтов, и перечислим особенности каждого метода.
-
Битые ссылки (broken links) — это ссылки на сайте, которые не работают: например, ведут на несуществующие страницы с кодом ошибки 404 (Page Not Found). Большое количество битых ссылок ухудшает позиции сайта в поисковых системах, а также негативно сказывается на удобстве для пользователей. В нашей статье мы расскажем, как проверить сайт на битые ссылки с помощью бесплатных онлайн-инструментов.
Случалось ли так, что вы понимали — необходимо добавить HTTPS в приложение, запущенное на локальном хостинге или каком-нибудь еще местном домене вроде local.my-app.com
?
Есть некоторые различия в том, как браузеры работают с HTTP и HTTPS. Например, любые попытки загрузить JavaScript на HTTPS-странице по HTTP-ссылке будут заблокированы. Это значит, что если локальная разработка идет на HTTP, то добавленный тэг скрипта прекрасно будет работать на вашей машине, но сломается, как только вы развернете приложение на промежуточном или продакшен-окружении, где всё работает под HTTPS. Не очень вдохновляющая перспектива.
Но не волнуйтесь. Во избежание подобных проблем полезно установить HTTPS в локальной среде разработки, чтобы более точно отображать ситуацию на рабочем сервере. Тем не менее, заставить эту штуку работать не так-то легко. Никто не хочет постоянно видеть предупреждения о сертификатах. Но как тогда обеспечить безопасность локально?
Ответ прост: создать собственный сертификат, либо подписывающий сам себя, либо заверенный локальным корневым сервером, и внести его в хранилище доверенных сертификатов операционной системы. Далее этим сертификатом можно пользоваться на локальном веб-сервере.
В этой статье мы разберем процесс создания локального корневого сертификата (также известного, как источник сертификатов). Это позволит вам создавать сколько угодно сертификатов для доменных имен, но доверять только одному сертификату — корневому.
Важно отметить вот что: с 1 сентября 2020 года SSL-сертификаты не выдаются дольше, чем на тринадцать месяцев (397 дней). Поэтому для сертификатов, создаваемых в этой статье, мы ограничимся двенадцатью месяцами.
Источник сертификата (Certificate Authority)
1. Создайте закрытый ключ и самоподписанный сертификат
openssl req -x509 -nodes -new -sha512 \
-days 365 -newkey rsa:4096 -keyout ca.key \
-out ca.pem -subj "/C=US/CN=MY-CA"
Опционально: если необходимо, можно заменить MY-CA
в CN
на что-нибудь другое.
Если вам захочется проверить информацию сертификата, его содержимое можно вывести, запустив следующий код:
openssl x509 -in ca.pem -text -noout
2. Создайте файл сертификата с расширением .crt
:
openssl x509 -outform pem -in ca.pem -out ca.crt
Сертификат доменного имени
В большинстве случаев достаточно зарегистрировать в сертификате вашу рабочую станцию. Тем не менее, если вы предпочитаете собственные доменные имена для локальных приложений, в созданный сертификат можно добавить несколько альтернативных имен.
1. Создайте файл расширения x509 v3:
Следуя этому шаблону, можно добавить сколько угодно доменных имен.
Примечание: пожалуйста, обновите DNS.4, DNS.5 и DNS.6 или удалите их, если у вас не настроены никакие локальные доменные имена.
2. Создайте закрытый ключ и запрос на подпись сертификата:
openssl req -new -nodes -newkey rsa:4096 \
-keyout localhost.key -out localhost.csr \
-subj "/C=US/ST=State/L=City/O=Some-Organization-Name/CN=localhost"
Опционально: страну, штат, город и организацию можно изменять.
3. Создайте самоподписанный сертификат:
openssl x509 -req -sha512 -days 365 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in localhost.csr \
-out localhost.crt
Использование сертификата
Приложениям, обслуживающим ваш контент, понадобится доступ к файлам сертификата и закрытого ключа. Это может быть локальный веб-сервер (Apache или NGINX), локальный сервис или какой-то другой локальный инструмент, допустим, сборщик модулей DevServer.
Вот несколько примеров:
Apache
NGINX
Webpack DevServer
webpack-dev-server --open --https \
--cert /path/to/localhost.crt \
--key /path/to/localhost.key
Express
const https = require("https");
const fs = require("fs");
const express = require("express");// прочитайте ключи
const key = fs.readFileSync("localhost.key");
const cert = fs.readFileSync("localhost.crt");
// создайте экспресс-приложение
const app = express();
Как только вы настроите обслуживающий ваше приложение инструмент на работу с вашим сертификатом, ваше приложение будет доступно по URL’у с HTTPS.
Следуя приведенному выше примеру с Express, вы можете открыть вкладку браузера по адресу https://localhost:8000 и увидеть ваш контент:
Погодите секунду! Где же сообщение «это защищенный сервер»?
Вы рассчитывали увидеть кое-что другое, но именно этого и следовало ожидать — потому что источник сертификата еще не входит в число доверенных.
Доверие к сертификатам
Чтобы получить обозначение безопасного доступа, ваш новый источник сертификата должен считаться доверенным на вашей машине. Процесс присваивания этого статуса различается в зависимости от операционной системы и удовлетворит большинство браузеров. Если вы используете Firefox, процесс имеет некоторые отличия.
MacOS — Chrome и Safari
1. Дважды кликните на корневом сертификате (ca.crt
).
3. Добавьте сертификат.
4. Откройте «Keychain Access» (если еще не открыт).
5. Выделите keychain, который выбрали раньше.
6. Вы должны увидеть сертификат MY-CA (это будет имя, которое вы, как CN, дали вашему источнику сертификата).
7. Дважды кликните по сертификату.
8. Разверните «Доверять» и выберите опцию «Доверять всегда» в пункте «При использовании этого сертификата».
9. Закройте окно сертификата и введите свой пользовательский пароль (если требуется).
Windows 10 — Chrome, IE11 и Edge
1. Дважды кликните на сертификате (ca.crt
).
2. Кликните на кнопку «Установить сертификат».
3. Выберите, хотите ли вы хранить его на уровне пользователя или на уровне машины.
4. Кликните «Дальше».
5. Выберите «Разместить все сертификаты в следующем хранилище».
6. Кликните «Обзор».
7. Выберите «Доверенные корневые источники сертификатов».
8. Кликните «ОК».
9. Кликните «Дальше».
10. Кликните «Завершить».
11. Если появится подсказка, кликните «Да».
Firefox
Даже после того, как вы установите доверенный источник сертификата в хранилище, Firefox все равно будет выдавать предупреждения. Этого может не случиться в Windows 10, но почти наверняка случится в macOS. Справиться с этим достаточно просто. Firefox демонстрирует вот такой экран:
Это нужно сделать всего один раз, но для каждого локального домена.
Заключение
Теперь, когда сертификат создан и доверие к нему обеспечено, вы без проблем можете посещать свой локальный домен! Обслуживание приложений стало безопасным, и вы можете спокойно продолжать разработку. Возвращаясь к примеру с Express, результат на экране будет таким:
Сайт полностью загружен, и рядом с URL в Chrome теперь отображается символ безопасного соединения.
Надеюсь, эта статья помогла вам превозмочь трудности с HTTPS.
Читайте нас в Telegram, VK и Яндекс.Дзен
Если слова https или ssl вам не знакомы, советую сначала изучить данную статью, после чего приступить к этой. В материале будет рассмотрена практическая часть установки ssl-сертификата с минимальной теоретической частью.
Обратите внимание! Пункт 4 в инструкции по переезду на HTTPS неактуален, яндекс отказался от использования директивы host. Сейчас взамен этого необходимо настроить 301 редирект или канонические адреса, подробнее в Яндекс.Помощи.
Существует большое количество методов установки ssl-сертификата, в этой статье осветим наиболее распространенные.
Но перед установкой стоит рассмотреть еще один важный вопрос, как подтвердить право владения доменом.
Подтверждение прав владения доменом
Необходимо пройти процесс валидации домена для выпуска сертификата. С помощью этой процедуры подтверждается право на владение доменом.
Возможны последующие проверки:
- проверка организации;
- расширенная проверка.
Мы рассмотрим только процесс доменной валидации. О таких вещах, как обратный звонок и разговор с сотрудником сертификационного центра, проверка организации через государственный реестр организаций, нет смысла говорить в рамках этой статьи, они не содержат технической части.
Txt запись в DNS
Вам будет предложено добавить запись типа TXT в DNS записи домена
Рассмотрим, как это делается в isp manager
- Во вкладке домены нужно выбрать доменные имена
- Просмотреть NS записи домена
- Создать новую ресурсную запись
- Выбрать тип txt и в поле «Значение» вставить текст записи
TXT запись может появиться не сразу, обычно это происходит в течение часа.
Проверить DNS записи домена можно с помощью утилиты dig. Сервисов существует много, возьмем, например, этот.
В поле домен нужно вписать название вашего домена. Можно выбрать конкретный тип записи, но в примере для наглядности выбрали показ всех записей. В таблице будет выведен список всех ресурсных записей, если в списке появилась запись, которую вы добавили, все было сделано верно. Если нет, вернитесь на шаг назад и перепроверьте записи.
После добавления записи не забудьте вернуться в административную панель хостинга и нажать кнопку «Проверить добавление записи».
Cname запись в DNS
Нужно будет сделать то же самое, что и в предыдущем пункте, только выбрав тип записи CNAME.
Запись имеет вид:
_hash.yourdomain.com CNAME hash.comodoca.com.
Yourdomain.com — имя вашего домена
Подтверждение с помощью доменной почты
После перехода по ссылке вы попадете на страницу центра сертификации, где нужно будет ввести код из письма и нажать кнопку продолжить.
Файл на сервере
Вам предоставят файл, который нужно будет разместить на сервере. В зависимости от центра, выдающего сертификат, расположить файл нужно будет в корневой папке сервера или же создать дополнительную папку и закачать файл в нее.
После подтверждения
В большинстве случаев вам на почту придет 3 файла (или они будут в личном кабинете регистратора ssl-сертификата).
Если файлы придут на почту, обязательно сохраните себе эти файлы! В случае утери нужно будет делать переиздание сертификата.
.key — Приватный ключ (Private Key)
.crt — файл сертификата, который мы вам выдали.
.ca-bundle — файл, содержащий корневые и промежуточные сертификаты в определенном порядке. Порядок:
- Промежуточный сертификат 2
- Промежуточный сертификат 1
- Корневой сертификат
Когда получены эти файлы, можно приступать к установке сертификата.
Установка сертификата через административную панель хостинга
Большинство компаний, предоставляющих услуги хостинга, в административной панели имеют или пункт SSL, или ssl-сертификаты, или безопасность — названий может быть множество.
Как правило, при переходе в этот пункт вам будет предложен выбор: установить существующий сертификат или же заказать(приобрести) новый сертификат.
Установка существующего сертификата с помощью административной панели хостинга
Рассматривать установку будем на примере хостинга timeweb.
- Необходимо в личном кабинете зайти в пункт меню ssl-сертификаты
- Выбрать пункт «Установить»
- Ввести данные сертификата в соответствующие поля
Установка Let’s Encrypt с помощью административной панели хостинга
- Необходимо в личном кабинете зайти в раздел меню ssl-сертификаты и выбрать пункт «Заказать».
- Кликнуть пункт «SSL Let’s Encrypt», затем выбрать, для какого домена выпустить сертификат
Установка сертификатов в ISP панели
В некоторых случаях для управления хостингом/сервером устанавливается ISP manager. Это панель управления веб-хостингом, позволяющая управлять программным обеспечением веб-сервера, сервером баз данных, почтовым сервером и другими.
Установка существующего сертификата в ISP manager
Рассмотрим ситуацию, когда вы приобрели сертификат и имеете в сохраненном виде все его файлы.
- В меню isp manager выбрать пункт ssl-сертификаты
- Создать ssl-сертификат
- Выбрать тип ssl-сертификата — «Существующий»
- Заполнить соответствующие поля в isp manager
Важно! Необходимо заполнить все поля, чтобы в дальнейшем не возникло проблем. В случае некорректной установки ssl-сертификата Яндекс.Вебмастер пришлет уведомление об ошибке.
О методе проверки корректности установки сертификата описано в конце статьи.
Установка Let’s Encrypt с помощью ISP manager
Панель isp предоставляет возможность установки бесплатного автопродляемого сертификата Let’s Encrypt. Для его установки необходимо выполнить следующие действия:
- В меню isp manager выбрать раздел «SSL-сертификаты», в нем выбрать Let’s Encrypt
- Выбрать домен, на который будет установлен сертификат (если вам необходим Wildcard сертификат, нужно установить соответствующую галочку).
Проверка правильности установки
Узнать, корректно ли вы установили сертификат, можно с помощью сервиса — sslshopper.com.
На главной странице сервиса будет поле check ssl, в нем нужно прописать адрес вашего сайта.
Если все правильно, вы увидите примерно такую картину:
1ps.ru resolves to 5.196.172.52ip адрес доменаServer Type: nginx/1.12.2тип сервераThe certificate should be trusted by all major web browsers (all the correct intermediate certificates are installed)говорит о том, что правильно установлены промежуточные сертификатыThe certificate was issued byкем выдан сертификатThe certificate will expire in 651 daysсколько дней осталось до окончания сертификатаThe hostname (1ps.ru) is correctly listed in the certificate.имя хоста совпадает с именем хоста прописаным в сертификате
Если сертификат не установлен, вы увидите ошибку:
В случае нарушения цепочки сертификатов всплывет такая ошибка: