Получаем бесплатный SSL сертификат от Let's Encrypt

В статье рассмотрим плюсы и минусы бесплатного Let"s Encrypt, для кого подойдет, как получить и установить его на сайт с панелью Plesk 12.5

Let"s Encrypt - бесплатный, автоматизированный проект, с открытым CA (certificate authority - центр сертификации).

ОСНОВНЫЕ ПРЕИМУЩЕСТВА

бесплатно: любой владелец сайта (в частности, доменного имени) может получить и установить доверенный TLS-сертификат Let"s Encrypt (TLS - наследник SSL);
автоматизация: все функции установки, конфигурации и обновления проводятся в автоматическом режиме;
безопасность: все методы шифрования Let’s Encrypt отвечают текущим стандартам;
прозрачность: публичная доступность информации о выпуске и отзыве каждого сертификата для любого желающего;
свободно: будет использован принцип open standard для протоколов взаимодействия с CA (certificate authority).

ПРОГРАММНАЯ РЕАЛИЗАЦИЯ

Центр Сертификации выдаёт сертификаты, которые генерируются на АСМЕ сервере по протоколу Boulder, написанные на языке GO (доступный в исходниках под лицензией MPL2).
Данный сервер предоставляет RESTful-протокол, который функционирует через канал с TLS шифрованием.
Клиентская часть протокола АСМЕ, т.е. certbot, написанный на языке Python, также открыт под APACHE лицензией. Certbot устанавливается на клиентском сервере, чтобы создавать запрос сертификата, проверить валидность домена и после этого устанавливает сертификат с последующей настройкой шифрования HTTPS веб-сервера.
Также в функцию certbot входит обновление сертификата после истечения срока действия. Установка сертификата производится одной командой после того как принимается лицензия.
Certbot позволяет устанавливать сертификат с дополнительными опциями -OCSP stapling и HTTP Strict Transport Security

УСТАНАВЛИВАЕМ SSL СЕРТИФИКАТ LET"S ENCRYPT (ИНСТРУКЦИЯ)

Рассмотрим использование сертификата применительно к серверам, используемым на нашем хостинге.
Подавляющее большинство наших серверов используют версию Plesk 12.5 где данный модуль уже включён в дистрибутив Plesk 12.5 и установка его проста и удобна. Достаточно зайти в панель плеск в раздел «Сайты и домены », кликнуть на модуль Let"s Encrypt,

Выбрать нужные опции и после нажатия кнопки «Установить», установка произойдёт менее чем за минуту.

Так как данный сертификат рассчитан на срок не более 90 дней, то в панели плеск создана соответствующая задача cron в разделе Инструменты и настройки - Планировщик задач

Стоит заметить, что существуют некоторые ограничения на генерацию сертификата:

  • дублирующие сертификаты - не более 5 в неделю;
  • количество попыток генерации сертификата не более 5 раз в час.

О НЕДОСТАТКАХ LET"S ENCRYPT

В конце этой статьи хотим отметить, что несмотря на все преимущества данного типа сертификата, существуют недостатки, которые нужно учитывать при выборе SSL:
  1. Бесплатный сертификат Let"s Encrypt кратковременный и рассчитан на срок не более 90 дней, в отличии от платного, который можно выпустить сроком до 3 лет. Вы можете, конечно, перевыпускать сертификат каждые 3 месяца, но обязательно следите за сроками. Перевыпуск сертификата можно осуществить тремя способами: вручную, за счет настройки планировщика задач cron или автоматически.

    Если вы выбрали способ обновления вручную , то следите четко за сроками и вовремя перевыпускайте сертификат. Иначе рискуете получить наплыв недовольных пользователей сайта и их последующий отток.

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

    Автоматическое обновление. Этот способ подразумевает, что вы принимаете автоматические настройки, предусмотренные Центром сертификации. И тут нужно понимать, что вы таким образом, даете свое согласие на то, что ЦС может вносить изменения по своему усмотрению в ПО и настройки вашего сервера.

  2. Не все домены можно защитить бесплатным Let"s Encrypt. Данный сертификат рассчитан только на защиту одного домена без проверки компании, так называемые DV SSL (Domain Validation).

    Так, при помощи Let"s Encrypt нельзя создать следующие типы сертификатов:

    - WildCard сертификат для защиты поддоменов определённого домена;
    - Сертификаты OV SSL(organization validation) , предполагающие проверку не только домена, но и компании;
    - Сертификаты EV SSL (extended validation) . Сертификат с максимальной степенью защиты и зелёной адресной строкой браузера;
    - Multi-Domain сертификат типа UCC;


  3. Важный момент - нет никаких финансовых гарантий использования Let"sEncrypt . Если вдруг произойдет взлом бесплатного сертификата, то денежную компенсацию никто вам не предоставит.

ЗАКЛЮЧЕНИЕ

Подводя итоги, можно сказать, что Центр Сертификации Let"s Encrypt достаточно успешный проект, популярность которого растет с каждым годом среди пользователей сети.

И если вам нужен простой сертификат для одного домена, вы обладаете соответствующими навыками администрирования, а также если нет необходимости в SSL с проверкой компании (OV- organization validation) или наличие зеленой адресной строки и указания названия компании в сертификате, то данный сертификат можно использовать.

Тем не менее, мы рекомендуем крупным компаниям, интернет-магазинам, банкам и другим e-commerce проектам устанавливать коммерческие от известных Центров сертификации, таких как, например, GlobalSign, Comodo.
Так вы заручитесь доверием пользователей и покажете, что вы серьезная компания, которая заботится о безопасности данных клиентов.

  • Поделиться:

В последнее время забота о безопасности и приватности пользователей набирает обороты. Когда проектировался интернет и протокол HTTP, о таких понятиях не думали. Поэтому весь трафик, передаваемый между веб-сервером и пользователем по протоколу HTTP, может быть просмотрен кем угодно, кто находится на пути этого трафика, например провайдером или хакерами.

Поэтому был придуман протокол HTTPS, который позволяет шифровать трафик и таим образом обезопасить его от перехвата. Для шифрования используются SSL-сертификаты. Раньше эти сертификаты стояли денег, но благодаря компании Let"s Encrypt теперь любой веб-сайт может установить SSL-сертификат и настроить шифрование абсолютно бесплатно. В этой статье мы рассмотрим, как получить сертификат Let"s Encrypt с помощью официального клиента Certbot.

Вообще, нам не обязательно использовать именно Certbot, мы могли бы создать сертификат в OpenSSL, а затем просто подписать его с помощью ACME API от Let"s Encrypt. Но к этому API надо выполнять запросы в формате JSON, что очень неудобно делать из командной строки, поэтому лучше использовать один из клиентов. Например Certbot. К тому же, большинство клиентов ACME уже включают автоматическую генерацию сертификата в OpenSSL.

1. Синтаксис и команды Certbot

Прежде чем перейти к работе, давайте рассмотрим синтаксис утилиты Certbot и её команды. Они выглядят достаточно просто:

certbot команда опции -d домен

Команды используются для того, чтобы сообщить утилите, что именно надо сделать. Вот основные из них:

  • run - используется по умолчанию, если никакая команда не указана, получает и устанавливает сертификат;
  • certonly - только получает или обновляет сертификат, но не устанавливает его;
  • renew - обновляет сертификат;
  • enhance - добавляет настройки безопасности для существующих сертификатов;
  • certificates - отображает установленные сертификаты;
  • revoke - отзывает сертификат;
  • delete - удаляет сертификат;
  • register - создает ACME-аккаунт;

Как видите, команд не так много, и теперь вы в них точно не запутаетесь, а теперь разберём основные опции:

  • -d - указывает домен или список доменов, разделённых запятыми, для которых надо получить сертификаты;
  • --apache - использовать плагин apache для установки сертификата;
  • --nginx - использовать плагин nginx;
  • --standalone - запускать собственный веб-сервер для аутентификации при получении сертификата;
  • --preferred-challenges - позволяет выбрать способ аутентификации, по умолчанию http, но можно выбрать dns;
  • --server - позволяет указать адрес ACME-сервера, нужно для WildCard-сертификатов, поскольку они поддерживаются только второй версией ACME;
  • --webroot - поместить файлы аутентификации в папку веб-сервера;
  • -w - указывает папку веб-сервера, куда надо поместить файлы аутентификации;
  • --manual - создание сертификата в ручном режиме;
  • -n - запустить утилиту в не интерактивном режиме;
  • --dry-run - тестовый запуск без сохранения изменений на диск.

Теперь мы готовы к тому, чтобы перейти к работе с утилитой. Сначала установим её.

2. Установка Certbot

Сначала необходимо установить утилиту Certbot. Это официальный клиент, и он есть в репозиториях большинства дистрибутивов. Установка Certbot в Ubuntu выполняется из PPA:

sudo apt install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt update
sudo apt install certbot

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

sudo apt install python-certbot-apache
sudo apt install python-certbot-nginx

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

3. Создание сертификата без установки

Если вам нужен сертификат для веб-сервера, который не поддерживается программой, вам придётся устанавливать его вручную. Получить такой сертификат можно с помощью команды certonly:

sudo certbot certonly --webroot -w /var/www/test...test.сайт

Эта команда получает сертификат для доменов test.сайт и www.test.сайт. Файлы для подтверждения аутентификации будут размещены в каталоге /var/www/example/. Также вы можете использовать встроенный веб-сервер для аутентификации:

sudo certbot certonly --standalone -d test..test.сайт

Во время генерации сертификата утилита спросит ваш Email-адрес для аккаунта ACME, на который будут приходить уведомления о необходимости продления и другая информация:

Затем вам предложат подтвердить, что вы прочитали правила использования сервиса, ответьте А :

Только после этого начнётся получение сертификата. Если всё прошло успешно, то ваш сертификат будет сохранён в /etc/letsencrypt/live/имя_домена/, оттуда вы уже можете использовать их в своих приложениях. Если же возникли ошибки, то утилита сообщит об этом.

4. Создание сертификата для Nginx

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

sudo certbot run --nginx

Дополнительные параметры задавать не надо, потому что утилита сама прочитает конфигурацию и выведет список доступных доменов:

Введите цифру нужного домена или несколько цифр, разделённых запятой. Утилита сама установит всё, что нужно, а затем спросит вас, нужно ли перенаправлять http-трафик на https:

Затем утилита выдаст ту же информацию, что и в предыдущем варианте:

5. Обновление сертификата Let"s Encrypt

Чтобы выполнить обновление сертификата Let"s Encrypt, достаточно запустить команду certbot с опцией certonly . Учитывая, что сертификат находится в папке certbot, а конфигурация веб-сервера настроена именно на эту папку, то этой операции достаточно. Если же сертификаты копируются в другую папку, то вам понадобится скрипт для их автоматического копирования после обновления.

sudo certbot certonly -d test..test.сайт

Если срок службы сертификата ещё не вышел и обновление не требуется, утилита спросит вас, действительно ли это надо сделать.

Если вы хотите обновлять сертификат в не интерактивном режиме, например с помощью скрипта, то нужно использовать опцию -n , также при использовании этой опции надо передать плагин, который будет использоваться для аутентификации:

sudo certbot certonly --nginx -n -d test..test.сайт

Теперь можно добавить эту команду в планировщик cron, например раз в неделю:

0 0 * * 0 /usr/bin/certbot certonly --nginx -n -d test..test.сайт

Если вы хотите обновить сертификаты для всех доменов одной командной в не интерактивном режиме, достаточно выполнить команду:

sudo certbot renew

6. Получение Wildcard сертификата Let"s Encrypt

Let"s Encrypt Wildcard-сертификаты появились относительно недавно. Они позволяют использовать один сертификат для всех поддоменов определённого домена, например *.test.сайт. Но и работает это всё сложнее - вам надо будет подтвердить, что этот домен принадлежит именно вам. Для этого надо добавить TXT-запись к зоне домена.

Вы можете сделать это вручную или же использовать dns-плагин для Certbot, чтобы добавить её автоматически. Правда, плагин поддерживается только для популярных сервисов, таких, как DigitalOcean, Linode, Cloudflare и так далее. В этой статье рассмотрим ручной вариант. Команда для генерации сертификата будет выглядеть вот так:

sudo certbot certonly --agree-tos -d test..test..api.letsencrypt.org/directory

Вам надо будет разрешить публикацию вашего IP-адреса, а потом добавить TXT-запись с нужным именем и значением к вашей доменной зоне. В моем случае это _acme-challenge.test.сайт со специальным хэшем:

Существует несколько способов установки сертификата от победившей всех конкурентов на рынке бесплатных решений 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 автоматически. Если в результате этих простых манипуляций видите в адресной строке зелёный замочек — значит, всё получилось. Поздравляю!

В ручном режиме для его дальнейшей установки на веб-сервер 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 года произошли небольшие изменения в порядке получения сертификата. Спасибо toxi_roman за обновление.

Старый способ подтверждения с 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.



Просмотров