Как сделать сертификат letsencrypt

Добавил пользователь Валентин П.
Обновлено: 04.10.2024

Получение и настройка бесплатного SSL сертификата Let’s Encrypt для сайта с помощью CertBot

  • Для успешного получения сертификата домен должен быть делигирован и доступен по адресу на машине, где будет запускаться генерация сертификата.
  • Сертификат действует в течении 90 дней, поэтому необходимо настроить его автоматическое обновление.
  • Предполагается, что корневая директория веб-сервера находится в /var/www

Установка и настройка CertBot

Клиент CertBot можно найти в репозитории некоторых дистрибутивов систем, но скорее всего там он будет весьма неактуальной версии, поэтому устанавливать лучше вручную.

Скрипт является обёрткой над CertBot, который всегда пытается получить самую актуальную версию и принимает те же параметры, что и сам CertBot. Доступен при выполнении команды certbot из любого места.

Чтобы избавить себя и других от запоминания параметров команды, необходимо настроить файл конфиругаций в /etc/letsencrypt/cli.ini

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

Настройка webroot для валидации домена при получении сертификата.

Ниже будут приведены настройки для наиболее часто используемого веб-сервера Nginx:

Далее открываем конфиг домена, для которого настраиваются сертификаты и в блоке server на 80 порту находим первый location и перед ним добавляем следующее: include conf/locations/letsencrypt.conf;

В конце программа должна отчитаться об успешной работе: The dry run was successful.

После чего уже можно получать настоящий сертификат.

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

Сегодня уже очень сложной обойтись без сертификатов. Какие-то сервисы или веб-сайты еще могут работать как без сертификатов, так и с ним. Однако, есть сервисы, которые уже не могут работать без сертификатов. Если для “боевого” сервиса часто покупается коммерческий сертификат как минимум на год, то для демонстрационных или тестовых стендов отдельный коммерческий сертификат покупается редко. Выпуск бесплатного сертификата Let’s Encrypt может быть очень к месту в таких ситуациях.

Let’s Encrypt – это центр сертификации, который занимается выдачей бесплатных сертификатов. Срок действия сертификата – 3 месяца. Поддерживается выпуск как широкоименных (wildcard), так и именных сертификатов, в т.ч. с несколькими именами (через атрибут SAN).

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

Мы рассмотрим выпуск бесплатного сертификата Let’s Encrypt через win-acme клиент. Лично мне довольно часто приходится использовать этот клиент для выпуска сертификатов на тестовые или отладочные стенды Exchange, Skype for Business, AD FS и ряд других сервисов.

Кстати, сертификат для веб-сервера этого блога также от Let’s Encrypt 🙂

Выпуск сертификата через win-acme клиент

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

Для выпуска бесплатного сертификата Let’s Encrypt через win-acme клиент необходимо выполнить следующие шаги:


2. Распаковать загруженный архив:


3. Запустить cmd.exe от имени администратора, перейти в распакованную в п. 2 директорию и выполнить команду:

Появится приветствие win-acme клиента:


4. Укажем, что мы хотим выпустить сертификат и при этом не использовать настройки по умолчанию, а указать те настройки, которые необходимы нам:


5. Укажем, что мы вручную перечислим необходимые нам имена:


6. Теперь нам необходимо указать имя, для которого мы планируем выпустить сертификат. Если необходимо указать несколько имен, то нужно указать их через запятую.


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

8. Теперь нам необходимо подтвердить право владения доменом. Это можно сделать несколькими способами. Мы укажем, что вручную создадим необходимые DNS записи:


9. Мы будем использовать RSA ключи:


10. Нам будет нужен сертификат в PFX формате – укажем это:


11. Укажем директорию для генерируемого PFX файла и пароль к нему:


12. Мы не планируем куда-то еще записывать наш сертификат:


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


14. Теперь нам необходимо создать запись в нашей DNS зоне для того, чтобы подтвердить право владения доменом. Параметры DNS записи нам генерирует win-acme клиент:


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


16. Теперь вернемся в наш win-acme клиент и нажмем Enter. После удачной проверки записи клиент попросит нас удалить её:


17. После этого win-acme клиент сгенерируют сертификат в форме PFX, о чем напишет нам в консоль:


18. Клиент теперь можно закрыть, а в директории, которую мы указывали для генерации сертификата мы должны увидеть итоговый PDF-файл:


Выпуск бесплатного сертификата Let’s Encrypt через win-acme клиент выполнен.

Заключение

В данной публикации было кратко рассказано об одном из методов, который можно использовать для выпуска бесплатного сертификата. Мы рассмотрели процесс выпуска бесплатного сертификата Let’s Encrypt через win-acme клиент.

В этой публикации укажу преимущества и недостатки бесплатных сертификатов SSL Let's Encrypt перед платными. Дам подробную инструкцию по установке на основе своего опыта и наглядно покажу как БЫСТРО получить (создать), и, если надо, перевыпустить (обновить) SSL-сертификат.

Вы увидите, как просто установить SSL-сертификат на сайт из хостинг-панели ISPmanager Business, буквально в пару кликов.

Let

Что такое SSL и зачем нужен?

С сентября 2018 года Google настойчиво порекомендовал всем сайтам без исключения, даже если он там реально не нужен, использовать SSL-сертификаты. Посему, теперь уже не имеет значения, что думаю по этому поводу я, вы или кто-либо другой! Придется ставить… Участь сайтов без SSL-сертификатов также указана Google.

Хорошо, что есть бесплатные SSL-сертификаты от Let's Encrypt.

Так что же такое SSL-сертификаты?

Если обратиться к мадам Wiki, то SSL-серификат это:

SSL (англ. Secure Sockets Layer — уровень защищённых cокетов )– это криптографический протокол, который подразумевает более безопасную связь. Он использует асимметричную криптографию для аутентификации ключей обмена, симметричное шифрование… и бла-бла-бла…

Большинству непосвященным, но очень заинтересованным людям, тяжело понять без поллитра суть SSL, если вы не родились с этим знанием. … Или родились?! Нет? Тоже так думаю…

Давайте разберём человеко-понятным языком, что такое SSL-сертификат и зачем он нужен:

SSL-сертификат – это неведомая для вас цифровая штука, которая за счёт хитрого шифрования обеспечивает безопасную передачу данных между сайтом (который вы открыли) и вашим браузером (через который вы просматриваете сайты).

Например, он зашифрует ваш логин и пароль, которые вы ввели на сайте с SSL-сертификатом, номер вашей банковской карты при оплате в интернете, и многое другое. Суть, думаю, ясна, и насколько это важно, уверен, уже догадались.

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

Кому нужны мои данные, и каковы последствия?

Обращайте внимание на сайты без SSL-сертификатов, на которых вам предлагается оставить свои данные.

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

В худшем, украдут деньги или чего ещё.

Вот так выглядит сайт, у которого истек срок действия SSL-сертификата, это опасный сайт:

Сайт не незащищенный SSL-сертификатом

Вот так выглядит сайт, у которого SSL-сертификат надежно защищает ваши данные:

Сайт защищенный SSL-сертификатом

Как получить (создать) и установить на сайт SSL Let's Encrypt

Преимущества

  • Бесплатный.
  • Простой в установке.
  • Надёжный.
  • Поддержка всеми браузерами.
  • Автоматический перевыпуск (продление) хостиг-панелью.

Недостатки

Другие явные недостатки не заметил.

Лично я, использую почти везде SSL Let's Encrypt, но всегда готов перейти на платные SSL, например, RapidSSL или Comodo PositiveSSL, они не очень дорогие и простые в установке.

Перевыпуск (обновление) SSL

SSL Let's Encrypt в хостинг-панели ISPmanager Business перевыпускается АВТОМАТИЧЕСКИ!

Получается, что раз установили и забыли. Круто! Платные SSL-сертификаты этим похвастаться не могут.

Ручной перевыпуск (обновление) SSL-сертификата

Вывод:

Как вы убедились, всё предельно просто, даже для человека, который никогда не сталкивался с SSL-сертификатами ранее.

Теперь вы не только понимаете, что такое SSL-сертификат, для чего он нужен и как он работает, но и знаете, как установить и переустановить его БЕСПЛАТНО для любого своего сайта, буквально за пару кликов, опираясь на подробную инструкцию.

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

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

date

03.06.2020

user

itpro

directory

Windows Server 2012 R2, Windows Server 2016

comments

комментария 33

В этом обзоре мы расскажем об особенностях установки и привязки бесплатного TLS/SSL сертификата от Let’s Encrypt для сайта на веб сервере IIS, запущенного на Windows Server 2019/2016/2012 R2.

Let’s Encrypt и ACME клиенты для Windows

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

  • Утилита WindowsACMESimple(WACS) – утилита командной строки для интерактивного выпуска сертификата и привязки его к определенному сайту на вашем веб сервере IIS;
  • Модуль PowershellACMESharp – библиотека Powershell с множеством команд для взаимодействия через ACME API с серверами Let’s Encrypt;
  • Certify – графический менеджер SSL сертификатов для Windows, позволяет интерактивно управления сертификатами через ACME API.

Клиент WACS для установки TLS сертификата Let’s Encrypt в IIS на Windows Server

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

Windows ACME Simple скачать с github

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

letsencrypt - клиент wacs.exe

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

Запустится интерактивный мастер генерации сертификата Let’s Encrypt и привязки его к сайту IIS. Чтобы быстро создать новый сертификат выберите N: — Create new certificates (simple for IIS).

wacs создать новый ssl сертфикат для сайта iis

Затем нужно выбрать тип сертификата. В нашем примере нет необходимости использовать сертификат с псевдонимами (несколькими SAN — Subject Alternative Name), поэтому достаточно выбрать пункт 1. Single binding of an IIS site. Если вам нужен Wildcard-сертификат, выберите опцию 3.

Далее утилита выведет список сайтов, запущенных на сервере IIS и предложит выбрать сайт, для которого нужно создать и привязать новый SSL сертификат.

wac выбрать сайт iis для создания сертфиката ssl

Укажите ваш email, на который будут отправляться уведомления о проблемах с обновлением сертификата сайта и другие о повешения (можно указать несколько email через запятую). Осталось согласится с условиями использования и Windows ACME Simple подключится к серверам Let’s Encrypt и попытается автоматически сгенерировать новый SSL сертификат для вашего сайта.

сгенерировать сертификат letsencrypt

Процесс генерации и установки SSL сертификата Let’s Encrypt для IIS полностью автоматизирован.

Утилита WACS сохраняет закрытый ключ сертификата (*.pem), сам сертфикат и ряд других файлов в каталог C:\Users\%username%\AppData\Roaming\letsencrypt-win-simple. Затем она в фоновом режиме установит сгенерированный SSL сертификат Let’s Encrypt и привяжет его к вашему сайту IIS. Если на сайте уже установлен SSL сертификат (например, самоподписанный), он будет заменен новым.

В IIS Manager откройте меню Site Binding для вашего сайта и убедитесь, что для него используется сертификат, выданный Let’s Encrypt Authority X3.

сертфикат сайта IIS подписан Let’s Encrypt Authority X3

В хранилище сертификатов компьютера сертификат Let’s Encrypt для IIS вы можете найти в разделе Web Hosting -> Certificates.

Web Hosting Certificates

C:\inetpub\letsencrypt\wacs.exe --renew --baseuri "https://acme-v02.api.letsencrypt.org"

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

задание планировщика Windows для обновления tls сертфиката letsencrypt через win acme renew

Также вы можете настроить перенаправление трафика через URL Rewrite через графический интерфейс IIS Manager. Выберите Sites -> yoursitename -> URL Rewrite.

iis модуль URL Rewrite

Создайте новое правило Add Rule -> Blank rule.

Укажите имя правила и измените значения параметров:

  • Requested URL -> Matches the Pattern
  • Using -> Regular Expressions
  • Pattern -> (.*)

URL-Rewrite edit inbound rule

В блоке Conditions измените Logical Grouping -> Match All и нажмите Add. Укажите

  • Condition input ->
  • Check if input string -> Matches the Pattern
  • Pattern -> ^OFF$

url rewrite добавить условия

Теперь в блоке Action выберите:

Использование сертификата Let’s Encrypt для Remote Desktop Services

Если вы используете для подключения внешних пользователей в корпоративную сеть шлюз Remote Desktop Gateway/ RD Web Access, вы можете использовать нормальный SSL сертификат Let’s Encrypt вместо обычного самоподписанного сертификата. Рассмотрим, как корректно установить сертификат Let’s Encrypt для зажиты служб Remote Desktop Services в Windows Server.

Если на Remote Desktop Gateway сервере поднята также роль RDSH, нужно запретить пользователям Read доступ к каталогу, в котором у вас хранится WACS (в моем примере это c:\inetpub\letsencrypt ) и к каталогу с сертификатами сертификат Let’s Encrypt (C:\ProgramData\win-acme).

Затем на сервере RDP GW, запускаете wacs.exe, как описано выше, и вы выбираете нужный сайт IIS (обычно, Default Web Site). Let’s Encrypt выдает вам новый сертификат, который устанавливается для веб-сайта и в планировщике появляется задание на автоматические обновление сертификата.

Вы можете вручную экспортировать данный сертификат и привязать его к нужным службам RDS через SSL binding. Но вам придется выполнять эти действия вручную каждые 60 дней при перевыпуске сертификата Let’s Encrypt.

Нам нужен скрипт, который бы сразу после получения (продления) сертификата Let’s Encrypt применял бы его для RD Gateway.

Для автоматического получения отпечатка сертификата с указанного сайта IIS используйте доработанный скрипт ImportRDGateway_Cert_From_IIS.ps1 (основан на стандартном ImportRDGateway.ps1).

Инструкция и модифицированный PowerShell скрипт присланы нашим читателем Антоном, за что посылаем ему лучи благодарности!

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

powershell -File ImportRDGateway_Cert_From_IIS.ps1

Import-Module WebAdministration
Get-ChildItem IIS:Sites

Получите список вида:

Get ChildItem IIS Sites - получить индексы сайтов в IIS

В колонке ID указан индекс вашего сайта, отнимите от него единицу. Полученный индекс вашего сайта нужно указать вместо 0 в 27 строке скрипта PowerShell:

ImportRDGateway_Cert_From_IIS - powershell скрипт для привязки ssl сертфиката из iis к rds

Чтобы не менять разрешения на выполнение скриптов PowerShell, вы можете вызывать скрипт командой:

PowerShell.exe -ExecutionPolicy Bypass -File c:\inetpub\letsencrypt\ImportRDGateway_Cert_From_IIS.ps1


Теперь скрипт привязки SSL сертификата к службам RDS будет выполнятся сразу после продления сертификата Let’s Encrypt. При этом автоматически перезапускается служба RD Gateway командой:

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

Также вы можете использовать бесплатные сертификаты Let’s Encrypt в Linux для веб сайтов на Nginx или apache.

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

Читайте также: