Let's Encrypt - бесплатный SSL-сертификат: как получить, инструкция по установке, настройке и продлению. Как установить бесплатный сертификат SSL от Let’s Encrypt на поддомен

Наличие SSL сертификата для сайта позволяет защитить данные пользователей, передаваемые по сети от атак человек-посередине (man-in-the-middle) и гарантировать целостность переданных данных В этом обзоре мы расскажем об особенности установки и привязки бесплатного SSL сертификата от Let’s Encrypt для сайта IIS, запущенного на Windows Server 2012 R2.

Пара слов о Let’ s Encrypt – это некоммерческий центр сертификации, позволяющий в автоматическом режиме через API выпускать бесплатные SSL/TLS сертификаты. Выдаются только сертификаты для валидации доменов (domain validation), со сроком действия 90 дней, что не является проблемой из-за наличия встроенной возможности автоматического перевыпуска сертификата, в результате чего можно непрерывность защиты.

API интерфейс, позволяющий автоматически выпускать сертификаты называется Automated Certificate Management Environment (ACME ) API. Для Windows систем на данный момент имеется 3 реализации клиента ACME API:

  • Утилита LetsEncrypt-Win-Simple – утилита командной строки для интерактивного выпуска сертификата и привязки его к определенному сайту на вашем веб сервере IIS
  • Модуль Powershell ACMESharp – библиотека Powershell с множеством команд для взаимодействия через ACME API с серверами Let’s Encrypt
  • Certify – графическая утилита для интерактивного управления сертификатами через ACME API (на данный момент функционал еще не полный, но проект развивается)

Самый простой способ получить SSL сертификат от Let’s Encrypt — воспользоваться консольной утилитой LetsEncrypt- Win- Simple . Она представляет собой простой мастер, который позволяет выбрать один из сайтов, запущенных на IIS, и автоматически выпустить и привязать к нему SSL сертификат.

Итак, предположим у нас имеется веб сайт на IIS, развёрнутый под управлением Windows Server 2012 R2. Наша задача, переключить его в HTTPS режим, установив SSL сертификат от Let’s Encrypt.

Скачайте последний релиз клиента со страницы проекта на GitHub https://github.com/Lone-Coder/letsencrypt-win-simple/releases (в моем случае это была версия v1.9.11.2).

Распакуйте его в каталог на сервере с IIS: c:\inetpub\letsencrypt

Откройте командную строку с правами администратора, перейдите в каталог c:\inetpub\ letsencrypt и запустите letsencrypt.exe.

Запустится интерактивный мастер, который сначала попросит указать ваш email на который будут отправляться уведомления о проблемах с обновлением сертификата и согласиться с пользовательским соглашением.

Затем нужно будет выбрать, что необходимо создать новый сертификат (N: Create new certificat e) и выбрать тип сертификата (в нашем примере нет необходимости использовать сертификат с несколькими SAN), поэтому достаточно выбрать пункт 1. Single binding of an IIS site .

Следующий этап – выполнение валидации домена. Доступно несколько вариантов валидации: TLS, через запись в DNS или через HTTP). Самый простой вариант — выбрать пункт 4 Create temporary application in IIS (recommended). В этом случае на веб-сервере будет создано небольшое приложение, через которое сервера Let’s Encrypt смогут провести валидацию.

Примечание . При выполнении TLS/HTTP проверки ваш сайт должен быть доступен снаружи по полному DNS имени по протоколам HTTP (80/TCP) и HTTPS (443/TCP).

После валидации утилита letsencrypt-win-simple автоматически отправит запрос на генерацию сертификата, скачает его (все необходимые файлы, а также закрытый ключ сохраняются в каталог C:\Users\Administrator\AppData\Roaming\letsencrypt-win-simple) и создаст привязку на сайте IIS.

В том случае, если на сайте уже установлен SSL сертификат, он будет заменен новым.

Кроме того, будет создано правило в планировщике заданий Windows, которое запускается каждый день и автоматически выпускающее и устанавливающее новый сертификат каждые 60 дней.

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

LetsEncrypt --renew

Чтобы перенаправить весь входящий HTTP трафик на HTTPS сайт, нужно установить модуль Microsoft URL Rewrite Module , и убедиться, что в настройках сайте не включена опция обязательного использования SSL (Require SSL). Осталось настроить редирект в файле web.config:













Отметим, что сертификаты Let’s Encrypt в настоящий момент широко используются на сайтах многих крупных компаний и им доверяют все браузеры. Надеюсь, что судьба бесплатного центра сертификации Let’s Encrypt не постигнет участь WoSign и StartCom.

В ручном режиме для его дальнейшей установки на веб-сервер Windows (IIS/Microsoft Azure) или Linux (полностью ручной режим). Из-за отсутствия официального клиента под Windows для генерации сертификата будет использоваться дистрибутив Linux .

В первые дни открытия заявок на бета-тестирование и было принято решение записаться и вот недавно пришло письмо, которое сообщает о том, что теперь программа ACME сгенерирует валидный сертификат для нашего домена.

Как это работает

Полное описание процесса доступно по этой ссылке .
Важно лишь знать, что для подтверждения владения доменом и успешной генерации сертификата нужно будет иметь доступ к записям DNS или к серверу куда ссылается A-запись, что вполне логично.

Смысл программного набора Automated Certificate Management Environment (ACME) (написан на Python) в том, чтобы автоматизировать генерацию и установку сертификата в Linux-окружении.

Существует неофициальный Windows-клиент с открытыми исходными кодами, который может генерировать и устанавливать сертификаты на Windows IIS и Amazon Web Services, но у нас была задача получить ключи и установить их вручную. Предлагаю любому желающему написать статью по работе с ним.

Процесс по шагам

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

Новый клиент CertBot

Небольшое обновление статьи в 2017 году.
Теперь можно установить CertBot и получить сертификат в ручном режиме.

Краткая инструкция:

1. Скачиванием дистрибутив

Wget https://dl.eff.org/certbot-auto

2. Установка прав на файл

Chmod a+x certbot-auto

3. Запуск для получения сертификата в ручном режиме

./certbot-auto certonly --authenticator manual

4. Следуйте указаниям программы (подробнее смотрите в полной инструкции ниже с шага № 4).

Подробная инструкция (старый клиент - всё ещё работает)

Использовалась официальная инструкция .
Пользователи Linux могут использовать текст ниже как пример генерации сертификата в ручном режиме.

1. Запустите ваш любимый дистрибутив Linux (мы использовали Debian 8).

либо 2. Установите Git и выполните команды ниже:

Git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt

или 2. Скачайте и распакуйте в папку данный архив и перейдите в эту папку

3. Запустите установку и генерацию с помощью

./letsencrypt-auto --agree-dev-preview --server \https://acme-v01.api.letsencrypt.org/directory -a manual auth

Вам будет предложено ввести электронную почту для восстановления в будущем.
Ключ -a manual позволит сгенерировать ключи в ручном режиме без их автоматической установки на веб-сервер.

5. Подтвердите сохранение вашего адреса в логах Let"s Encrypt

6. Подтвердите владение доменом

В сентябре 2016 года произошли небольшие изменения в порядке получения сертификата. Спасибо за обновление.

Старый способ подтверждения с text/plain (не актуально по состоянию на октябрь 2016 г.)

Если у вас сервер на Windows (с поддержкой Razor Views, аналогично и с MVC), то самый простой способ создания правильного ответа:
а) создать папку.well-known и в ней папку acme-challenge
б) поместить туда файл [запрос].cshtml
в) в содержание этого файла добавить:
@{Response.ContentType = "text/plain";Response.Charset = "";}здесь проверочный код

7. После успешной проверки, будут созданы следующие сертификаты в папке :

privkey.pem - приватный ключ для сертификата
Используется Apache для SSLCertificateKeyFile и nginx для ssl_certificate_key.

cert.pem (сертификат сервера)
Используется Apache для SSLCertificateFile.

chain.pem (сертификат цепочки)
Он же используется Apache для SSLCertificateChainFile.

fullchain.pem (соединение chain.pem и cert.pem)
Он же используется nginx для ssl_certificate.

7. Теперь пришло время сконвертировать его в родной для Windows .pfx формат.
Перейдите в папку /etc/letsencrypt/live/[имя домена] (откройте терминал в режиме администратора с помощью команды su):

Cd /etc/letsencrypt/live/[имя домена]

Запустите OpenSSL с помощью команды:

И начните конвертацию с помощью команды:

Pkcs12 -inkey privkey.pem -in fullchain.pem -export -out mydomain.pfx

Вас попросят ввести пароль и подтвердить его.

7.2 Выходим из OpenSSL с помощью команды quit

7.3 Копируем итоговый файл в директорию нашего пользователя
cp --no-preserve=all mydomain.pfx /home/(имя пользователя)/Documents

8. Мы получили сертификат mydomain.pfx , который теперь можем использовать в Windows-окружении.

Для обновления сертификата в ручном режиме:
./letsencrypt-auto certonly --renew-by-default -a manual

Важно знать, что сертификаты Let"s Encrypt валидны 90 дней. Рекомендуется обновлять их каждые 60 дней. На электронную почту, которую вы указали для генерации, будут приходить уведомления об истечении сертификата.

Буду рад услышать ваши замечания или пожелания к статье.

SSL-сертификация сайтов с каждым днем вызывает все большую головную боль для веб-разработчиков и владельцев сайтов. Сперва Google пригрозились худшим ранжированием сайтов не имеющих защищенное соединение (HTTPS), многие веб-разработчики установили бесплатные SSL-сертификаты от StartCom. Однако с выходом Mozilla Firefox версии 51.0.1 и Google Chrome версии 56 сертификатам WoSign и StartCom доверия больше нет. Что ж, тогда мы обратили внимание на Let"s Encrypt. Почему ранее мы как и многие другие веб-разработчики обходили стороной этот вариант, так это из-за маленького срока действия сертификата - 3 месяца. То есть через каждые 3 месяца сертификат подлежит обновлению, а лучше, если это делать каждые 60 дней.

Инструкций как сделать сертификат на Let"s Encrypt в ОС Linux много, поэтому затруднений это вызвать не должно. Однако как это сделать для сайтов работающих на ОС Windows с IIS оказалось найти не так просто и не так подробно как это хотелось бы. Поэтому была создана эта инструкция.

Как это сделать используя только Windows, можно посмотреть здесь:

Но нас это также не порадовало, т.к требуется установка MS Visual Studio, что как-то совсем не по феншую.

Выход конечно не очень тривиальный, но для нас было самое то! Делаем сертификат для Windows из под Linux!

Потребуется установить CertBot. Для этого скачиваем его:

wget https://dl.eff.org/certbot-auto

Даём права на запуск:

chmod a+x certbot-auto

и запускаем для получения сертификата в ручном режиме:

./certbot-auto certonly --authenticator manual

Скрипт запросит пароль и возможно доустановит дополнительные пакеты, от которых он зависим, в нашем случае это были mod_ssl, python-tools и python2-virtualenv:

Спросит согласны ли вы с их условиями предоставления услуг здесь: https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf, если да, то отвечаем "A":

Затем спросят могут ли они отправить вам информацию о своей работе по защите данных, если согласны - отвечаем Y:

В следующем шаге наконец-то вводим наше доменное имя:

Теперь начинается самое интересное, нам нужно подтвердить владение доменом, для этого нужно будет сделать некоторые изменения в настройках IIS, а именно разрешить отображение файлов не имеющих расширение. Для этого идем в IIS раздел "Типы MIME":

Теперь нам нужно добавить свой тип, для этого в правой колонке нужно нажать на "Добавить...":

Откроется окно где нам следует ввести следующее:

В расширение файла вводим точку, а в "Тип MIME" вводим "text/html". Теперь мы можем проходить проверку Let"s Encrypt на владение доменом.

Возвращаемся к командной строке в Linux и после шага на разрешение использования нашего IP-адреса в логах Let"s Encrypt мы видим, что система просит нас о создании дополнительных директорий и файла в корневой директории сайта:

Создаем в корневой директории сайта папку ".well-known", а в ней папку "acme-challenge" и уже в последней файл с указанными именем и содержанием.

После того как все будет готово к проверке в консоли Linux жмем клавишу Enter и, если вы все правильно сделали в директории "/etc/letsencrypt/live/<имя домена>" будут находится сертификаты:

  • cert.pem - сертификат сервера, используется для Apache (SSLCertificateFile);
  • chain.pem - сертификат цепочки, используется для Apache (SSLCertificateChainFile);
  • fullchain.pem - используется для соединения cert.pem и chain.pem, в Nginx в параметре ssl_certificate;
  • privkey.pem - приватный ключ для сертификата, используется для Apache (SSLCertificateKeyFile) и Nginx в параметре ssl_certificate_key.

Осталось из полученных от Let"s Encrypt файлов получить сертификат в легитимном виде для MS Windows. Идем в консоль с правами ROOT (для этого испольщуем команду "su") и переходим в директорию "/etc/letsencrypt/live/<имя домена>" и запускаем в консоли OpenSSL:

openssl

конвертируем сертификаты в нужный нам pfx-формат:

pkcs12 -inkey privkey.pem -in fullchain.pem -export -out yourdomain.pfx

Система запросит ввод и подтверждение пароля:

OpenSSL нам больше не нужен, поэтому выходим из него с помощью команды "quit". Копируем pfx-сертификат без сохранения атрибутов в домашнюю директорию, чтобы мы смогли с ним работать без root"а:

cp --no-preserve=all yourdomain.pfx /home/<имя пользователя>/

Теперь мы можем копировать полученный сертификат на машину с Windows любым удобным для вас способом.

Для его установки в Диспетчере служб IIS идем в раздел "Сертификаты сервера" и в правой колонке жмём на "Испортировать...", где в открывшемся окне указываем файл сертификата и пароль, заданный в консоле Linux во время конвертирования сертификата. В результате ваш сертификат должен оказаться в списке "Сертификаты сервера":

Не забываем зайти в привязки узла и выбрать в https привязке узла новый сертификат.

После чего перезагружаем сервер IIS и радуемся результату!

P.S. Для обновления сертификата на Linux машине, где сертификат генерировался ранее следует выполнить команду:

./certbot-auto renew

после чего вновь их нужно будет конвертировать в PFX-формат и импортировать в IIS.

Наличие SSL - больше не прихоть крупных компаний, а обязательное требование для всех. Без SSL сайты теряют позиции в поисковой выдаче, посетителей и деньги. Let’s Encrypt в панели ISPmanager позволяет выпускать бесплатные SSL - как обычные, так и . Запрос и установка происходят автоматически и не требуют технических навыков.

Зачем нужен SSL-сертификат

Когда вы заходите на сайт, вы подключаетесь к серверу, на котором он расположен. Если подключение не защищено, хакеры могут украсть логины, пароли и номера банковских карт. SSL-сертификат нужен, чтобы сделать подключение защищенным. С ним данные, которые вы вводите, шифруются. Даже если хакеры их перехватят, они не смогут их расшифровать.

С 2017 года поисковые роботы Google отмечают сайты без SSL как небезопасные и понижают их позиции в поисковой выдаче. Google Chrome и Mozilla Firefox маркируют HTTP сайты как ненадежные. Так браузеры предупреждают пользователей, что мошенники могут украсть личные данные и деньги.

Переведите сайт на HTTPS, чтобы усилить позиции в поисковых системах и вызывать доверие посетителей. С модулем Let’s Encrypt для этого не нужны ни деньги, ни технические навыки.

Кому подойдет Let’s Encrypt

Let’s Encrypt выпускает SSL-сертификаты начального уровня с проверкой домена (DV). Поэтому Let’s Encrypt отлично подходит для небольших онлайн-проектов, где не требуется строгая гарантия безопасности: блогов, хобби-сайтов, сайтов-визиток. Зеленого замочка в строке браузера достаточно, если посетители не вводят логины и пароли и не совершают покупки.

DV-сертификат только подтверждает, что домен действительно принадлежит вам. Посетители сайта не столкнутся с предупреждениями браузера о посещении непроверенного сайта. Мошенники не перехватят информацию пользователей, так как сертификат обеспечивает безопасное HTTPS-соединение.

Важно! Мы не рекомендуем использовать DV-сертификат на сайтах интернет-магазинов и корпоративных порталов, где требуется более высокий уровень доверия пользователей. При выпуске SSL с проверкой домена центр сертификации не проверяет законность бизнеса. Поэтому такой сертификат не гарантирует посетителям, что владельцу домена можно доверять логины, пароли и номера банковских карт.

Как установить Let"s Encrypt

Шаг 1.

Чтобы установить Let’s Encrypt, ISPmanager должен быть не ниже версии 5.65.

  • Откройте ISPmanager,
  • Из-под учетной записи root перейдите в раздел Интеграция → Модули ;
  • Установите модуль Let’s Encrypt.

Теперь вы можете получить действующий самообновляющийся SSL-сертификат для своего домена. Для этого понадобится пользователь с правом пользоваться SSL и действующее доменное имя.

Шаг 2.

После установки в разделе Настройки web-сервера → SSL-сертификаты нажмите на кнопку Let"s Encrypt , чтобы получить сертификат. Подробнее о создании сертификата в .

Сертификат генерируется успешно, если абсолютно все указанные домены и псевдонимы (алиасы) открываются с сервера. Если даже 1 из них не откроется, не удастся выпустить сертификат.

О проекте Let’s Encrypt

Let’s Encrypt - некоммерческий доверенный центр сертификации. Он отличается от других тем, что выдает SSL-сертификаты бесплатно. При этом процесс выпуска полностью автоматизирован.

Проект создан в 2014 году, чтобы большая часть интернет-сайтов смогла перейти к безопасному соединению по HTTPS. Среди его основных спонсоров ведущие технологические компании мира: Mozilla, Google Chrome, Cisco, Facebook. Партнерами Let’s Encrypt являются центр сертификации IdenTrust, University of Michigan, Stanford Law School, Linux Foundation.

Основные принципы Let’s Encrypt:

  • Безвозмездность. Владелец любого домена может получить доверенный SSL бесплатно;
  • Автоматизация. Let’s Encrypt автоматически запрашивает, конфигурирует и обновляет сертификаты;
  • Безопасность. Let’s Encrypt продвигает лучшие практики безопасности как на стороне центра сертификации, так и на стороне веб-сайтов.

Обращаем ваше внимание, что Let’s Encrypt имеет следующие ограничения:

  1. Можно заказать только 5 сертификатов в неделю на домен первого уровня и его поддомены.
  2. Срок действия Let’s Encrypt сертификата - 3 месяца. Каждые 3 месяца ISPmanager автоматически перевыпускает сертификаты.
  3. Let’s Encrypt не предоставляет гарантий и не выплачивает компенсацию в случае утечки данных, так как является некоммерческой организацией.

Полный список ограничений

Существует несколько способов установки сертификата от победившей всех конкурентов на рынке бесплатных решений Let’s Encrypt. Самым простым из таких способов является тикет в техподдержку вашего хостинга с вопросом о наличии поддержки Let’s Encrypt и просьбой установить сертификаты для ваших доменов и настроить автоматическое продление.

Список поддерживающих Let’s Encrypt хостинговых контор размещён на сайте проекта . Список не исчерпывающий и ориентирован на западного клиента — даже если вашего хостинга в списке нет, всё равно стоит спросить.

Let’s Encrypt от хостинг-провайдеров

Мой блог работает на — и у них поддержка Let’s Encrypt есть, хоть и не заявлена ни в вышеуказанном списке, ни на сайте самого «Фоззи». Более того, в январе текущего года провайдер взял и установил автоматически продлевающиеся SSL-сертификаты на все домены и поддомены своих клиентов, за что ему большое спасибо — мне осталось только настроить переадресацию с HTTP на HTTPS-урлы.

Когда трёхлетний сертификат от потерявших доверие китайцев из WoSign с выходом 57-й версии Google Chrome , я удалил его и попросил сотрудников Fozzy установить для блога Let’s Encrypt, что тут же было сделано.

Более того, сайт курумканской районной администрации работает на «1С-Битрикс» и очень посредственном ростелекомовском хостинге, который также поддерживает Let’s Encrypt. Установить автоматически продлевающийся SSL-сертификат на хостинге «Ростелеком» можно самостоятельно: зайдите в ISP Manager, там выберите пункт «WWW», затем в выпавшем меню «SSL-сертификаты», нажмите кнопку «Создать» и выберите нужный домен. Всё.

Что делать, если хостинг не желает устанавливать Let’s Encrypt и пытается впарить платный сертификат? Если у вас WordPress-сайт, вы не хотите переезжать на какой-нибудь Fozzy и ваш нехороший хостинг предоставляет доступ к управлению сервером через сPanel (очень часто встречающееся решение), я знаю, как эту проблему решить без сложных манипуляций.

WordPress-плагин WP Encrypt

Простой в использовании рабочий плагин , который, правда, давно не обновлялся. Не далее чем пару дней назад (в 20-х числах марта 2017 года) я проверил его работу на другом домене и всё получилось.

Схема работы такова: устанавливаем и активируем плагин, переходим в его настройки. Там нужно как угодно «обозвать» ваш сайт и выбрать для него наиболее подходящую страну. Затем внизу страницы настроек нажать кнопку «Register Account», буквально в один-два клика зарегистрироваться и затем нажать появившуюся взамен такую же синюю кнопку «Generate Sertificate».

После мгновенной генерации SSL-сертификата вам будут указаны пути на веб-сервере, куда были сохранены файлы сертификата и ключей (нас интересуют cert.pem и private.pem ).

Не забудьте в настройках плагина отметить чекбокс «автоматически обновлять сертификат» или «уведомлять об истечении сертификата за столько-то дней», или и то, и другое. За работоспособность автопродления не ручаюсь, наверняка придётся обновлять сертификат вручную каждые три месяца, и это главный минус Let’s Encrypt и описанного способа его использования в целом.

Будьте так добры, попробуйте и где-нибудь в комментариях отпишитесь, работает ли в плагине автопродление. А мы пока перейдём в cPanel.

Установка SSL-сертификата в cPanel

В «Диспетчере файлов» нужно найти папку, в которую плагин сложил файлы сертификата. Обычно путь выглядит так: «letsencrypt→live→„ваш домен“». Теперь по клику правой кнопкой мыши открываем файл cert.pem (лучше открывать файлы сертификата для чтения, опция «View») и целиком копируем его содержимое.

Возвращаемся в cPanel, там в разделе «Безопасность» есть пункт «SSL/TLS». В нём следует кликнуть по ссылке «Установка и управление SSL для сайта (HTTPS)», внизу страницы под заголовком «Установить сайт с SSL-шифрованием» выбрать домен, для которого был сгенерирован сертификат, и в поле «Сертификат: (CRT)» вставить содержимое файла cert.pem.

Затем в диспетчере файлов нужно аналогичным образом обработать файл private.pem и вставить его содержимое в следующее «окошко» установки сертификата «Закрытый ключ (KEY)». Поле «Пакет центра сертификации: (CABUNDLE)» можно оставить пустым.

Если вы всё сделали правильно, сервер должен сообщить, что введённые данные корректны, и можно нажимать кнопку «Установить сертификат». Если в шифрах есть ошибки, появится соответствующее предупреждение. Вот, в общем-то, и всё, что нужно знать об установке SSL-сертификата на Apacheподобные серверы с помощью cPanel.

Двухминутная настройка HTTPS-everywhere на WordPress-сайте

На разных хороших сайтах о переезде на HTTPS много текста написано, какие-то сложные манипуляции с базами данных и т. д., но в наше время всеобщего упрощения хочется чего-то ненапряжного и быстрого.

Для этого в первую очередь нужно перейти в настройки WordPress, там в поля «Адрес WordPress (URL)» и «Адрес сайта (URL)» вместо имеющегося вбить адрес вашего сайта с префиксом https://. Внимание: делайте это только после того, как установили сертификат на сервер, иначе после сохранения настроек сайт перестанет открываться!

Далее устанавливаем два плагина — WP Force SSL и Easy HTTPS Redirection . После их активации всё содержимое сайта должно перейти на HTTPS автоматически. Если в результате этих простых манипуляций видите в адресной строке зелёный замочек — значит, всё получилось. Поздравляю!