Let s encrypt получить сертификат windows

В этом обзоре мы расскажем об особенностях установки и привязки бесплатного TLS/SSL сертификата от Let’s Encrypt на хосте под управлением Windows. Будут описана процедура выпуска, продления сертификата для веб-сайта IIS, а также установка сертификата Let’s Encrypt для защиты подключений к службам RDS.

Содержание:

  • Получение и установка сертификат Let’s Encrypt в IIS на Windows
  • Продление (перевыпуск) сертификата Let’s Encrypt в Windows
  • Перенаправление трафика IIS сайта с HTTP на HTTPS адрес
  • Использование сертификата Let’s Encrypt для Remote Desktop Services

Некоммерческий центр сертификации Let’s Encrypt позволяет в автоматическом режиме через API выпускать бесплатные доверенные криптографические сертификаты X.509 для TLS-шифрования (HTTPS). Выдаются только сертификаты для валидации доменов (domain validation), со сроком действия 90 дней с возможность перевыпускать сертификат по расписанию.

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

Получение и установка сертификат Let’s Encrypt в IIS на Windows

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

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

Скачайте последнюю версию клиента WACS с GitHub (https://github.com/PKISharp/win-acme/releases) для вашей платформы. В нашем случае это win-acme.v2.2.9.1701.x64.pluggable.zip. Распакуйте архив в папку на диске.

Скачать клиент WACS (win-acme) c GitHub

Запустите утилиту
wacs.exe
с правами администратора.

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

wacs.exe утилита для генерации сертификата letsencrypt в Windows

Утилита может выдать, что вебсайты не обнаружены:

No websites with host bindings have been configured in IIS. Add one in the IIS Manager or choose the plugin 'Manual input' instead.  

Source plugin IIS was unable to generate options

В этом случае, запустите консоль управления IIS (
inetmgr
), откройте меню Site Bindings вашего сайта и проверьте, что для сайта задано имя узла (Host Name). Подробнее об этом параметре в статье Как запустить несколько сайтов в IIS на одном порту и IP?

Задать hostname для веб сайта IIS

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

Затем нажмите
A
, чтобы выбрать все привязки сайта и
y
чтобы продолжить.

Примите условия пользовательского соглашения, нажав
y
.

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

wacs: http-01 validaciya имени сайта/домена при генерации сертификата let's encrypt

На этом этапе веб сервисы Let’s encrypt должны проверить, что вы являетесь владельцем домена, для которого выпускается. По умолчанию используется HTTP валидация (http-01 validation, SelfHosting). Для этого на вашем хосте запускается небольшой Http Challenge Server (если этот порт занят, используется IIS), на порт 80 которого выполняется подключение (входящий HTTP 80 порт должен быть открыт в файерволе). В папку веб-сервера будет записан файл ответа
\.well-known\acme-challenge\<random_filename>
.

Если по тем или иным причинам вы не можете выполнить ACME HTTP-01 валидацию, можно использовать DNS-01 валидацию. Для этого в DNS зоне вашего домена нужно создать специальную TXT запись. Эта опция доступна, если выбрать в первом меню клиента wacs пункт M: Create certificate (full options). ACME клиент при валидации домена проверяет наличие этой записи в DNS.

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

  • Закрытый ключ сертификата (*.pem) и сам сертификат (*.pfx) сохраняются в каталог
    C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org\Certificates
  • Подробные логи всех операций WACS по запросу, получению и установке сертификата в каталоге
    C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org\Log

Если валидация выполнена успешно, утилита получит от CA сертификат, установит его в хранилище сертификатов и назначит в качестве SSL сертификата целевого сайта IIS. Если на сайте уже установлен SSL сертификат (например, самоподписанный), он будет заменен новым.

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

lets encrypt сертификата установлен для HTTPS сайта в IIS

Сертификат Let’s Encrypt для IIS установлен в раздел Web Hosting -> Certificates хранилища сертификатов компьютера (
certlm.msc
).

Сертификат let's encrypt в хранилище сертификатов Windowsv-hranilishe-windows

Можно автоматизировать выпуск сертификата с помощью аргументов утилиты wacs.exe. Например, выпустить сертификат Let’s Encrypt со стандартными настройками для сайта можно так:

wacs.exe --target manual --host 12345.winitpro.ru --store certificatestore --validation selfhosting --siteid "TestWebSite"

Продление (перевыпуск) сертификата Let’s Encrypt в Windows

Так как сертификаты Let’s Encrypt выпускаются всего на 90 дней, их нужно периодически обновлять. При генерации нового сертификата, утилита WACS сразу создает в планировщике задач Windows задание для автоматического продления (а фактически перевыпуска) сертификата.

Откройте консоль Task Scheduler (taskschd.msc). Как вы видите, в нем появилось задание win-acme renew (acme-v02.api.letsencrypt.org), которое запускает раз в день команду проверки срока действия и обновления установленных сертификатов:

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

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

Продлить (обновить) сертификат можно спустя 60 дней после его выпуска.

Перенаправление трафика IIS сайта с HTTP на HTTPS адрес

Так как для вашего сайта теперь установлен SSL сертификат, вы можете отказаться от использования незащищенного протокола HTTP и полностью перейти на HTSSP. Все HTTP запросы к сайту можно автоматически перенаправлять на HTTPS адрес с помощью IIS модуля Microsoft URL Rewrite Module.

Подробно это описано в статье Настройка редиректа HTTP на HTTPS в IIS на Windows Server.

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

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

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

С помощью wacs.exe на сервере RDGW выпустите Let’s Encrypt сертификат для Default Web Site в IIS как описано выше. Можно вручную привязать это сертификат к нужным служба RDS. Но вам придется выполнять эти действия вручную каждые 60 дней при перевыпуске сертификата Let’s Encrypt.

В проекте ACME есть готовый PowerShell скрипт для автоматического импорта Let’s Encrypt в RD Gateway (…\Scripts\ImportRDGateway.ps1). Недостаток этого скрипта – приходится вручную указывать отпечаток нового сертификата:

ImportRDGateway.ps1 <certThumbprint>

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

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

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

powershell -File ImportRDGateway_Cert_From_IIS.ps1

Если у вас RDS Gateway живет на стандартном IIS сайте «Default Web Site» с индексом 0, можете использовать скрипт без изменений.

Чтобы получить ID сайта в IIS, откройте консоль PowerShell и выполните:

Import-Module WebAdministration
Get-ChildItem IIS:Sites

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

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

В колонке ID указан индекс вашего сайта, отнимите от него единицу. Полученный индекс вашего сайта нужно указать вместо 0 в 27 строке скрипта PowerShell:
$NewCertThumbprint = (Get-ChildItem IIS:SSLBindings)[0].Thumbprint

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

Теперь откройте задание планировщика
win-acme-renew (acme-v02.api.letsencrypt.org)
и на вкладке Action добавьте новое задание, которое запускает PowerShell скрипт ImportRDGateway_Cert_From_IIS.ps1 после обновления сертификата.

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

PowerShell.exe -ExecutionPolicy Bypass -File c:\ps\acme\scripts\ImportRDGateway_Cert_From_IIS.ps1

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

Restart-Service TSGateway

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

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

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

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

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

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

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

Процесс по шагам (на январь 2024 г.)

На текущий момент можно использовать WSL вместо Linux в составе Windows 10/11.
Для этого достаточно запустить терминал в режиме администратора и написать:
wsl --install

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

1. Устанавливаем Snapd

2. Далее запускаем:
sudo snap install --classic certbot

3. И привязываем команды:
sudo ln -s /snap/bin/certbot /usr/bin/certbot

Проверку домена можно осуществить в нескольких режимах:

4 (1). По текстовой записи у домена в DNS:

sudo certbot certonly --authenticator manual --preferred-challenges dns

4 (2). По текстовому ответу (OK 200, text/plain) по адресу http://(ваш домен):80/.well-known/acme-challenge/{путь}

sudo certbot certonly --authenticator manual

Старый способ (2017 г., новый клиент 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 позволит сгенерировать ключи в ручном режиме без их автоматической установки на веб-сервер.

4. Далее введите домены для которых вы хотите создать сертификаты

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

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

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

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

Это один из ответственных моментов в режиме ручной регистрации.
Обратите внимание: нас просят создать ответ на запрос, который возвращает Content-Type text/plain.

Такой ответ не пройдёт и подтверждение выдаст ошибку:

Нужно, чтобы было так:

Если у вас приложение ASP.NET CORE (Minimal API):

app.MapGet(".well-known/acme-challenge/{id}", (HttpRequest request) =>
{
return "ваш ключ";
});

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

-> После успешной проверки, будут созданы следующие сертификаты в папке /etc/letsencrypt/live/[имя домена]:

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.

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

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

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

openssl

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

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

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

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

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

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

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

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

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

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Планируете ли вы использовать сертификаты от Let&amp;amp;amp;amp;amp;#039;s Encrypt в своих проектах

8.71% Нет, я использую альтернативный сертификат (StartSSL, CloudFlare Flexible SSL)122

4.71% Нет, у меня уже есть платный сертификат66

Проголосовал 1401 пользователь. Воздержались 290 пользователей.

Получение бесплатного SSL сертификата Let’s Encrypt

Обновлено:
Опубликовано:

Тематические термины: Let’s Encrypt, CentOS, Ubuntu

Процесс в данной статье описан на примере систем Linux CentOS, Ubuntu (Debian) и Windows. Настройка выполняется в несколько шагов.

Условия получения
Проверка права на домен
    Используя веб-сервер
    С помощью NS
Установка утилиты для запроса сертификата
    Certbot (Linux)
    LetsEncrypt-Win-Simple (Windows)
Получение сертификата вручную
    На Linux
    На Windows
Автоматическое продление
    Linux
    Windows
Запуск certbot в контейнере docker
Получение Wildcard

Полезные команды
Экспорт сертификатов в Windows с закрытым ключом
Let’s Encrypt для Exchange

Возможные ошибки
Дополнительные материалы

Условия получения бесплатного сертификата от Let’s Encrypt

Прежде чем начать, необходимо знать о некоторых нюансах получения сертификата Let’s Encrypt:

  • При запросе выполняется проверка домена. Для этого необходимо:
    1. либо создать TXT-запись в DNS.
    2. либо поднять веб-сервер, далее в его корне создается каталог .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 {
    listen       80;
    server_name  dmosk.ru;
    root   /usr/share/nginx/html;
}

* где dmosk.ru — домен, для которого работает сайт и для которого мы будем запрашивать сертификат; /usr/share/nginx/html — путь по умолчанию для nginx.

Если сервер уже используется для сайта, в секцию server добавляем:

location ~ /.well-known/acme-challenge {
    root /usr/share/nginx/html;
    allow all;
}

* данными строчками мы говорим, что для всех запросов после /.well-known необходимо отдавать скрипты из каталога /usr/share/nginx/htmlallow all предоставляет доступ всем.

При необходимости выполнять проверку и использовать rewrite/return, добавляем что-то подобное:

    …
    location ~ /.well-known/acme-challenge {
        root /usr/share/nginx/html;
        allow all;
    }
    if ($uri !~ /.well-known/acme-challenge){
        return 301 https://$host$request_uri;
    }

После проверяем конфигурацию и перезапускаем nginx:

nginx -t && nginx -s reload

Linux Apache

Создаем общий конфигурационный файл, в котором пропишем алиас.

а) для CentOS:

vi /etc/httpd/conf.d/lets.conf

б) для Ubuntu / Debian:

vi /etc/apache2/conf-enabled/lets.conf

Со следующим содержимым:

Alias /.well-known/acme-challenge/ /var/www/html/.well-known/acme-challenge/

* в данном примере, запросы для страниц /.well-known/acme-challenge всех сайтов мы переводим в каталог /var/www/html/.well-known/acme-challenge.

Проверяем корректность конфигурационного файла:

apachectl configtest

И перезапускаем apache:

systemctl restart httpd || systemctl restart apache2

Windows

IIS должен отвечать на http-запрос до доменному имени, для которого мы планируем получить сертификат. Также в его настройках мы должны сделать привязку узла, для которого хотим получить сертификат к конкретному сайту. Для этого в консоли управления IIS раскрываем сайты и выбираем нужный нам (в данном примере, он всего один):

В меню справа кликаем по Привязки:

Изменяем привязку для имеющийся записи и, при необходимости, добавляем еще:

Настраиваем привязки сайта

Применяем настройки и закрываем консоль управления IIS.

С помощью записи в DNS

Данный метод проще, описанного выше, но он позволит настроить автоматическое продление сертификата только для некоторых DNS, для которых есть отдельные certbot-плагины. Поэтому данный способ, в большинстве случаев, будет удобен для проведения тестов.

У нас должна быть возможность управления записями в DNS. На данном этапе достаточно просто зайти в панель управления DNS и перейти к этапу получения сертификата (ниже по тексту). Если домен новый и был только-что делегирован на DNS, возможно, придется подождать, пока он не станет доступен для всех серверов DNS в глобальной сети.

Установка утилиты для получения сертификата

Certbot для Linux

1) Rocky Linux:

dnf install epel-release

dnf install certbot

2) на CentOS 8:

dnf —enablerepo=powertools install certbot

3) на CentOS 7:

yum install certbot

4) на Ubuntu 16.04 и выше, а также Debian:

apt update

apt install certbot

5) Универсальный через python-pip:

Пакет certbot является приложением python и для его установки нужно использовать модуль pip. Сам модуль также нужно поставить. В зависимости от дистрибутива Linux наша команда будет отличаться.

а) Для систем на базе DEB:

apt install python3-pip

б) Для систем на базе RPM:

yum install python3-pip

После установки пакета нам доступен модуль pip. Используем его для установки certbot.

Начнем с обновления самого модуля:

python3 -m pip install —upgrade pip

Выполняем установку:

python3 -m pip install certbot

6) Astra Linux:

Для астры не нашел репозитория установки certbot, но есть решение хоть и не красивое, но рабочее.

Загружаем deb-файлы для debian 10:

wget http://ftp.de.debian.org/debian/pool/main/p/python-certbot/certbot_0.31.0-1+deb10u1_all.deb

wget http://ftp.de.debian.org/debian/pool/main/p/python-certbot/python3-certbot_0.31.0-1+deb10u1_all.deb

Пробуем установить python3-certbot:

dpkg -i python3-certbot_0.31.0-1+deb10u1_all.deb

Если мы получим ошибку зависимостей, например:

dpkg: зависимости пакетов не позволяют настроить пакет python3-certbot:
 python3-certbot зависит от python3-acme (>= 0.29.0~), однако:
  Пакет python3-acme не установлен.
 python3-certbot зависит от python3-configargparse (>= 0.10.0), однако:
  Пакет python3-configargparse не установлен.
 python3-certbot зависит от python3-josepy, однако…

… выполняем команду:

apt install -f

Также мы можем посмотреть список зависимостей командой:

dpkg -I python3-certbot_0.31.0-1+deb10u1_all.deb

Будет выполнена установка зависимостей. После устанавливаем скачанные пакеты:

dpkg -i python3-certbot_0.31.0-1+deb10u1_all.deb

dpkg -i certbot_0.31.0-1+deb10u1_all.deb

7) на сильно устаревшие системы, например CentOS 6 / Ubuntu 14.04 / Debian 8:

Создадим каталог, в котором будет храниться утилита и переходим в него:

mkdir /opt/certbot

cd /opt/certbot

Загружаем утилиту и разрешаем ее запуск:

wget https://raw.githubusercontent.com/certbot/certbot/7f0fa18c570942238a7de73ed99945c3710408b4/letsencrypt-auto-source/letsencrypt-auto -O /opt/certbot/letsencrypt-auto

chmod a+x ./letsencrypt-auto

Для удобства, делаем симлинк:

ln -s /opt/certbot/letsencrypt-auto /usr/local/sbin/certbot

Запустим команду:

certbot

При первом запуске certbot он автоматически предложит доустановить необходимые зависимости — соглашаемся.

LetsEncrypt-Win-Simple для Windows

На сайте GitHub скачиваем win-acme pluggable для нужной разрядности операционной системы:

Скачиваем win-acme pluggable для Windows x32 или x64

Раcпаковываем скачанный архив в любую папку.

Первое получение сертификата

Linux

1. Если мы подтверждаем право на домен при помощи веб-сервера, выполняем команду с таким синтаксисом:

certbot certonly —webroot —agree-tos —email <почта администратора домена> —webroot-path <путь до каталога с файлами проверки> -d <домен 1> -d <домен 2> -d …

* где:

  • certonly — запрос нового сертификата;
  • webroot — проверка будет выполняться на основе запроса к корню сайта;
  • agree-tos — даем согласие на лицензионное соглашение;
  • email — почтовый адрес администратора домена;
  • webroot-path — каталог в системе Linux, который является корневым для сайта;
  • d — перечисление доменов, для которых запрашиваем сертификат.

а) Пример запроса при использовании веб-сервера NGINX:

certbot certonly —webroot —agree-tos —email postmaster@dmosk.ru —webroot-path /usr/share/nginx/html/ -d dmosk.ru -d www.dmosk.ru

б) Пример запроса при использовании веб-сервера Apache:

certbot certonly —webroot —agree-tos —email postmaster@dmosk.ru —webroot-path /var/www/html/ -d dmosk.ru -d www.dmosk.ru

После успешного выполнения команды, сертификаты будут созданы в каталоге /etc/letsencrypt/archive/dmosk.ru, а также симлинки на них в каталоге /etc/letsencrypt/live/dmosk.ru. При настройке приложений, стоит указывать пути до симлинков, так как при обновлении файлы в первом каталоге будут меняться, во втором — нет. Публичный ключ будет с именем cert.pem, а приватный — privkey.pem.

2. При подтверждении права на домен с TXT-записью:

certbot certonly —manual —agree-tos —email postmaster@dmosk.ru —preferred-challenges=dns -d dmosk.ru -d www.dmosk.ru

* где:

  • certonly — запрос нового сертификата;
  • manual — проверка домена вручную.
  • preferred-challenges — указывает метод проверки домена.
  • agree-tos — даем согласие на лицензионное соглашение;
  • email — почтовый адрес администратора домена;
  • d — перечисление доменов, для которых запрашиваем сертификат.

На запрос подтверждения отвечаем Y — система выдаст что-то на подобие:

Please deploy a DNS TXT record under the name
_acme-challenge.dmosk.ru with the following value:

W2SC9b88y2j2oUjhxVgS7Bphph9g5PqhkBq9KiWkLTm

Once this is deployed,

* Данное сообщение говорит, что мы должны создать TXT-запись _acme-challenge.dmosk.ru со значением W2SC9b88y2j2oUjhxVgS7Bphph9g5PqhkBq9KiWkLTm.

Создаем соответствующую запись в панели управления DNS, и в консоли сервера нажимаем Enter для продолжения. Если, как в данном примере, мы запрашиваем сертификат для нескольких узлов, повторяем действия.

Windows

Открываем командную строку от администратора и переходим в распакованный каталог. Например, если архив распакован на диск C, выполняем:

cd C:\win-acme.v2.1.6.773.x64.pluggable

* где 2.1.6.773.x64 — моя версия утилиты.

Запускаем wacs:

wacs.exe

Если запускаем в Powershel, то так:

.\wacs.exe

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

wacs.exe —store pemfiles —pemfilespath C:\Certificates

* где pemfilespath — путь до каталога, в котором должны оказаться файлы сертификата.

Откроется меню с выбором действия — вводим N, чтобы создать новый сертификат:

Начальная меню win-acme

Обратите внимание, что в зависимости от версии win-acme, некоторые пункты могут отличаться. Внимательно просмотрите варианты.

Выбираем сайт в IIS, который отвечает на запросы нашего домена (в нашем случае, это единственный Default Web Site, то есть 1):

Выбираем сайт для которого хотим получить сертификат

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

Вводим email адрес и подтверждаем корректность данных:

Вводим почтовый адрес для уведомлений

Утилита создаст необходимый каталог для проверки домена, запросит проверку, получит сертификат, добавит привязку к сайту по 443 порту с добавлением полученного сертификата и создаст в планировщике задание на автоматическое продление сертификата.

Автоматическое продление

Утилита certbot позволяет выполнить обновление сертификата в автоматическом режиме. В зависимости от операционной системы, инструменты различаются.

Linux

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

crontab -e

Если система вернет ошибку crontab: command not found, устанавливаем пакет cron и запускаем сервис.

а) Для deb-систем:

apt install cron

б) Для rpm-систем:

yum install cron

systemctl enable crond —now

Прописываем строку.

0 0 * * 1,4 /usr/bin/certbot renew —noninteractive

* в данном примере проверка и продление сертификата будет выполняться по понедельникам и четвергам (1,4) в 00:00.

Команда certbot renew проверяет для всех наших сертификатов срок окончания, и если осталось менее 30 дней, запрашивает новый, сохраняет его в каталоге /etc/letsencrypt/archive/<домен> и обновляет симлинк.

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

vi /etc/letsencrypt/cli.ini

И добавляем строку с командной перезапуска нужного нам приложения, например:


deploy-hook = systemctl reload nginx

Windows

Настройка задания на автоматическое продление создается при получении сертификата. Проверить задание можно в планировщике заданий Windows:

Используем docker

Рассмотрим отдельный способ получить сертификат, если у нас на компьютере нет веб-сервера, но работает docker. В этом случае, мы можем запустить контейнер certbot, и выполнить в нем все необходимые процедуры.

Контейнер certbot поддерживает два сценария запуска:

  1. Запустить свой веб-сервер.
  2. Использовать имеющийся веб-сервер.

Мы рассмотрим вариант 1.

А вариант 2 описан в другой статье — Docker-compose для создания веб-сервера.

Запускаем контейнер certbot/certbot и выполняем в нем команду certonly:

docker run -it —rm —name certbot -p 80:80 -v «/etc/letsencrypt:/etc/letsencrypt» -v «/var/lib/letsencrypt:/var/lib/letsencrypt» certbot/certbot certonly

На первом шаге нас спросят, в каком режиме включить certbot — выбираем вервый (запуск веб-сервера):

How would you like to authenticate with the ACME CA?
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
1: Runs an HTTP server locally which serves the necessary validation files under
the /.well-known/acme-challenge/ request path. Suitable if there is no HTTP
server already running. HTTP challenge only (wildcards not supported).
(standalone)
2: Saves the necessary validation files to a .well-known/acme-challenge/
directory within the nominated webroot path. A seperate HTTP server must be
running and serving files from the webroot path. HTTP challenge only (wildcards
not supported). (webroot)
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Select the appropriate number [1-2] then [enter] (press ‘c’ to cancel): 1

При вервом запуске контейнера, необходимо указать адрес электронной почты:

Enter email address (used for urgent renewal and security notices)
 (Enter ‘c’ to cancel): master@dmosk.ru

Принято лицензионное соглашение:

Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must
agree in order to register with the ACME server. Do you agree?
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
(Y)es/(N)o: Y

Подписка на рассылки о статусе сертификатов:

Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let’s Encrypt project and the non-profit organization that
develops Certbot? We’d like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
(Y)es/(N)o: N

* Y если хотим получать рассылки или N — чтобы контролировать процесс без оповещений на почту.

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

Please enter the domain name(s) you would like on your certificate (comma and/or
space separated) (Enter ‘c’ to cancel): dmosk.ru www.dmosk.ru

* как и в случае с обысной проверкой, данные имена должны вести на наш сервер, на котором запускается docker-контейнер.

Если операция прошла успешно, мы должны увидеть:


Successfully received certificate.

Для продления сертификатов с помощью docker вводим команду:

docker run -it —rm —name certbot -p 80:80 -v «/etc/letsencrypt:/etc/letsencrypt» -v «/var/lib/letsencrypt:/var/lib/letsencrypt» certbot/certbot renew

Wildcard

С марта 2018 года появилась возможность получить бесплатный сертификат на все поддомены, например, mail.dmosk.ru, test.dmosk.ru, admin.dmosk.ru (*.dmosk.ru).

Особенности получения Wildcard от Let’s Encrypt:

  1. Подтвердить право использования доменом можно только с помощью DNS — таким образом, затрудняется процесс автоматического продления. Нужно использовать плагины, которые позволяют автоматически создавать нужную запись на DNS, но они доступны далеко не для всех поставщиков услуг DNS. В противном случае, обновлять Wildcard нужно вручную.
    Также, некоторые панели управления хостингом, например ISP Manager с версии 5 могут управлять процессом получения Wildcard от Let’s Encrypt с возможностью автоматического продления (но необходимо, чтобы домен обслуживался на данном хостинге).
  2. Время действия сертификата также ограничено 3 месяцами.

Certbot

Необходимо, чтобы версия утилиты certbot была 0.22.0 и выше. Проверить текущую версию можно командой:

certbot —version

… если версия ниже, обновляем ее командами:

а) для CentOS / Red Hat:

yum update certbot

б) для Ubuntu / Debian: 

apt update

apt install —only-upgrade certbot

Процесс получения

Процесс очень похож на процесс получения сертификата с подтверждением домена в DNS.

Вводим команду:

certbot certonly —manual —agree-tos —email master@dmosk.ru —server https://acme-v02.api.letsencrypt.org/directory —preferred-challenges=dns -d dmosk.ru -d *.dmosk.ru

* обратим внимание на 2 детали: 1) мы добавили опцию server, чтобы указать, на каком сервере Let’s Encrypt должна проходить проверка DNS; 2) мы получаем сертификат как для *.dmosk.ru, так и самого dmosk.ru, так как первое не включает второго.

… система попросит создать TXT-запись в DNS, который обслуживает наш домен:

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Please deploy a DNS TXT record under the name
_acme-challenge.dmosk.ru with the following value:

DN8ovKFJ0leLQV9ofZ81mYKxojwIaed5g6f0bXZCYiI

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

… сертификат получен.

Полезные команды

Рассмотрим некоторые полезные команды утилиты certbot для работы с сертификатами Let’s Encrypt.

1. Показать группы сертификатов:

certbot certificates

2. Удалить сертификат:

certbot delete -d dmosk.ru

После получения сертификата мы не сможем экспортировать его с закрытым ключом. Мы можем изменить поведение, открыв файл settings.json в распакованном каталоге win-acme. Находим параметр PrivateKeyExportable и задаем ему значение:

«PrivateKeyExportable»: true,

После обновляем сертификат:

.\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 можно командой:

wacs.exe —source manual —host exchange.dmosk.ru,autodiscover.dmosk.ru —store centralssl,certificatestore —certificatestore My —acl-fullcontrol «network service,administrators» —centralsslstore «C:\SSL» —installation iis,script  —installationsiteid 1 —script «./Scripts/ImportExchange.v2.ps1» —scriptparameters «‘{CertThumbprint}’ ‘IIS,SMTP,IMAP’ 1 ‘{CacheFile}’ ‘{CachePassword}’ ‘{CertFriendlyName}'»

* данная команда запросит сертификат для узлов exchange.dmosk.ru и autodiscover.dmosk.ru, сохранит нужные файлы в каталоге C:\SSL и импортирует полученные ключи в Microsoft Exchange Server.

Если мы запускаем команду в оболочке PowerShel, клманда должна начинаться с:

.\wacs.exe …

После успешного выполнения команды, заходим в консоль управления сервером, переходим на вкладку управления сертификатами. В списке мы должны увидеть полученную последовательность от Let’s Encrypt. Кликаем по ней и назначаем сертификат для нужных служб Exchange (как правило, SMTP, IIS).

Возможные ошибки

Рассмотрим некоторые ошибки, с которыми мы можем столкнуться.

1. Missing command line flag or config entry for this setting

Ошибка появляется при попытке обновить сертификат для одного или нескольких доменов.

Причина: при обновлении сертификата, утилита certbot ищет настройки в конфигурационном файле /etc/letsencrypt/renewal/<имя домена>.conf. Если в данном файле не будет определена конфигурация для webroot_map, мы получим данную ошибку.

Решение:

Открываем конфигурационный файл для домена, например:

vi /etc/letsencrypt/renewal/dmoks.ru.conf

Находим опцию webroot_map (как правило, в самом низу). Либо она будет пустой, либо указывать на неправильный путь. Исправляем это:

dmoks.ru = /usr/share/nginx/html

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

Пробуем обновить сертификат.

2. ACMEv1 is deprecated and you can no longer get certificates from this endpoint

Ошибка появляется при попытке запросить или обновить сертификат. Полный текст ошибки:

Attempting to renew cert (xxx) from /etc/letsencrypt/renewal/xxx.conf produced an unexpected error: urn:acme:error:serverInternal :: The server experienced an internal error :: ACMEv1 is deprecated and you can no longer get certificates from this endpoint. Please use the ACMEv2 endpoint, you may need to update your ACME client software to do so. Visit https://community.letsencrypt.org/t/end-of-life-plan-for-acmev1/88430/27 for more information.. Skipping.

Причина: утилита на компьютере устарела. Она пытается использовать API-портал ACMEv1, который больше не поддерживается.

Решение: обновляем утилиту certbot.

а) Для Ubuntu/Debian:

apt update

apt —only-upgrade install certbot

б) Для Rocky Linux/CentOS:

yum update certbot

3. Remote error: tls: handshake failure

Ошибка появляется при попытке запросить или обновить сертификат.

Причина: Let’s Encrypt отключил устаревшие наборы шифров TLS во время проверки.

Решение: если проверка выполняется на веб через https, то нам потребуется, чтобы последний работал с TLS современной версии. На момент обновления данной инструкции, 1.3.

Чтобы решить проблему, необходимо обновить веб-сервер до актуальной версии. А также убедиться, что в настройках не указаны конкретные шифры без нужной версии. Например, если в NGINX будет настройка:

ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;

… то мы получим ошибку. Для ее решения нужно добавить шифр:

ssl_protocols       TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;

И не забываем перезапустить nginx:

nginx -t && nginx -s reload

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

Другие полезные материалы:

1. Примеры редиректов в NGINX.

2. Настройка Apache + SSL для работы сайта по HTTPS.

3. Установка Docker на Linux.

Cryptographic certificates are the digital equivalent of website validation, which enables you to encrypt connections using TLS protocol and thus provide a secure link between server and client.

There are both paid and free certification centers. Let’s Encrypt is one of the free centers, which provides certificates for 90 days with an automatic renewal option.

Step 1: Getting started

First, you should stop all TrueConf Server services and all processes that can use 80 and 443 ports, such as Apache Http Server.

To create a TLS certificate on Windows, download the ACME Simple (WACS) program. Then follow the instruction:

  1. Extract the downloaded archive to the C:\wacs\ folder.
  2. Create a crt directory in the same folder.
    How to create a "Let's Encrypt" certificate on Windows 1

  3. In Windows Defender Firewall, go to Advanced SettingsInbound RulesNew RulePort; enter 80 and 443 ports separated by comma in the Specific local ports field and click Next. Then select Allow the connection, click Next again, specify which profiles the rule will apply to (for all by default) and after clicking Next, save the rule under any name.

Step 2: Creating a certificate

Open the command line (cmd) as administrator and run the following program:

Next, run the following commands sequentially by entering the letters and digits corresponding to the menu options that you want to select. For example, to run the command Create certificate (full options), you will need to type m and press Enter. (for version 2.2).

  1. Start creating the certificate by manually specifying the parameters. To do it, select:
    • Create certificate (full options)
    • Manual input.

    How to create a "Let's Encrypt" certificate on Windows 2

  2. Specify your domain name and press Enter twice to confirm.
    How to create a "Let's Encrypt" certificate on Windows 3

  3. If necessary, you can create separate certificates for subdomains and hosts. In our case, we will select Single Certificate:
    How to create a "Let's Encrypt" certificate on Windows 4

  4. Then select the following options sequentially:
    • [http] Serve verification files from memory
    • RSA key
    • PEM encoded files (Apache, nginx, etc.).

    How to create a "Let's Encrypt" certificate on Windows 5

  5. Specify a folder for saving certificates C:\wacs\crt.
  6. You will be offered to create the password for the private key. Select None.
    How to create a "Let's Encrypt" certificate on Windows 6

  7. Next, select:
    • No (additional) store steps
    • No (additional) installation steps.

    How to create a "Let's Encrypt" certificate on Windows 7

  8. Answer additional questions as follows:
    • type no for the question Open in default application?
    • type yes for the question Do you agree with terms?.
  9. Specify an email address for error notifications.

When you successfully create the certificate, you will see the Authorization result: valid message. Answer no to the question Do you want to specify the user the task will run as? question.

If a certificate has already been generated for the specified domain name, there will be the corresponding notification in the Existing renewal line. The certificate expiry date will be provided as well. You can create the certificate again by entering yes in response to the question Overwrite settings?.

Three files will be generated in the C:\wacs\crt folder:

  • domain_name-crt.pem is the certificate itself
  • domain_name-key.key is the key file
  • domain_name-chain.pem is the trust chain, it includes Let’s Encrypt root and intermediate certificates.

Now you can use them in TrueConf Server, as shown in our article.

В данной статье мы посмотрим, как можно установить бесплатный сертификат Let’s Encrypt на web-сайт, работающий на Internet Information Servises (IIS). Наш справочник уже содержит мануалы по установке такого сертификата на Ubuntu и на CentOs, поэтому отложим теорию и приступим.

В качестве примера для установки сертификата мы будем использовать VPS, работающий на Windows Server 2019. На нашем сервере мы развернули web-сервер из набора серверов IIS, на котором запустили сайт my-domain.host. Доступ к сайту осуществляется по протоколу http.

Доступ к сайту по HTTP - Как установить бесплатный сертификат Let's Encrypt на IIS

Задача – получить сертификат из Центра Сертификации Let’s Encrypt, установить его на наш web-сервер и привязать к нашему домену. Также, мы перенаправим трафик HTTP на протокол HTTPS. Другими словами, при попытке подключится к сайту по протоколу HTTP, система будет включать протокол HTTPS.

Получение сертификата

Наиболее простым способом установки SSL-сертификата от Let’s Encrypt является применение консольной утилиты WACS (Windows ACME Simple). WACS позволяет осуществить автоматический выпуск и привязку SSL-сертификата к сайтам, работающим на IIS. На момент написания данной статьи актуальной версией утилиты являлась версия v2.1.22.1289. Загрузка клиента WACS доступна со страницы проекта на GitHub – https://github.com/win-acme/win-acme/releases.

Страница загрузки WACS - Как установить бесплатный сертификат Let's Encrypt на IIS

После загрузки архива распакуйте его содержимое в каталог C:\inetpub\letsencrypt\ на вашем виртуальном сервере. Далее, запустите на исполнение файл wacs.exe. В открывшемся меню нужно выбрать опцию создания сертификата с установками по умолчанию. Для того, чтобы это сделать, введите символ N.

Запуск утилиты WACS

На следующем шаге утилита предложит выбрать сайт, для которого будет выпускаться сертификат. Поскольку в нашем случае в IIS находится всего один сайт, то мы можем нажать Enter. Если в списке будут находиться несколько сайтов, вы можете выбрать один или несколько из них, перечислив их номера через запятую. После чего нажмите символ A, чтобы выбрать все привязки, и символ y, чтобы подтвердить свой выбор.

Выбор сайта в WACS

Далее, утилита предложит открыть для прочтения Пользовательское соглашение, после чего попросит вас подтвердить своё согласие с ним. Необходимо будет ещё раз нажать y.

Пользовательское соглашение

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

Создание сертификата

После этого ваш домен должен уже быть доступен при подключении к нему с использованием протокола HTTPS. Проверьте это, набрав в браузере имя вашего сайта с префиксом https://.

Доступ к сайту по HTTPS

Настройка протокола HTTPS

В менеджере IIS установленный сертификат можно просмотреть через меню Bindings... Для этого следует выбрать требуемый сайт с типом https, нажать Edit и в строке SSL certificate нажать View...

Просмотр сертификата в IIS

Плюс ко всему, утилита WACS создаёт задание в Планировщике заданий (Task Scheduler), предназначенное для продления срока действия установленного сертификата в автоматическом режиме. Задание будет ежедневно запускать на исполнение следующую команду:

C:\inetpub\letsencrypt\wacs.exe --renew --baseuri "https://acme-v02.api.letsencrypt.org/"
Задание в Task Scheduler

Поскольку наш сайт теперь доступен по 443-му порту (протокол HTTPS), есть смысл отказаться от использования доступа по протоколу HTTP. Для этого необходимо перенаправить трафик HTTP на наш HTTPS-сайт. Чтобы это сделать, потребуется произвести на сервере установку модуля Microsoft URL Rewrite Module. Данный софт доступен для загрузки по ссылке – https://www.iis.net/downloads/microsoft/url-rewrite.

Страница загрузки Microsoft URL Rewrite Module

После установки утилиты в профиле сайта на IIS появится кнопка URL Rewrite.

URL Rewrite

Используя её нужно будет создать новое правило для перенаправления трафика: Actions 🠒 Add Rule(s).... 🠒 Blank rule. В строке Name укажите имя для нового правила (в нашем примере это – HTTP Redirect Rule). В строке Requested URL следует выбрать Matches the Pattern, в строке Pattern наберите (.*). Также, в блоке настроек Conditions в строке Logical Grouping выберите Match All и нажмите Add. В окне Add Condition в строке Condition input укажите {HTTPS}, в строке Check if input string выберите Matches the Pattern, в строке Pattern наберите ^OFF$. После чего нажмите ОК.

Добавление правила - Как установить бесплатный сертификат Let's Encrypt на IIS

Также, в блоке настроек Action укажите Redirect в строке Action type, в строке Redirect URL наберите https://{HTTP_HOST}/{R:1} и в строке Redirect type выберите Permanent (301). Завершив настройки, примените внесённые изменения при помощи Apply в правом верхнем углу окна Internet Information Servises (IIS) Manager.

Блок Action - Как установить бесплатный сертификат Let's Encrypt на IIS

Теперь, перейдя в браузере по адресу вашего сайта с использованием протокола HTTP, веб-сервер должен будет перенаправить вас на адрес вашего сайта, но уже с префиксом https://.

Вместо заключения

В заключение всё-таки несколько слов о теории.

SSL-сертификаты делятся на три основных типа:

  • сертификаты, выпускаемые через проверку прав на домен – Domain Validated (DV);
  • сертификаты, подтверждающие домен и его принадлежность конкретному юридическому лицу – Organization Validation (OV);
  • и, наконец, сертификаты с расширенной проверкой – Extended Validation (EV).

Сертификат от Let’s Encrypt, получение которого мы описали в данном руководстве, относится к первой категории.

Также, сертификаты могут быть платными и бесплатными. Рассмотренный в нашей статье SSL-сертификат от Let’s Encrypt является бесплатным. Но является ли это его неоспоримым преимуществом?

С одной стороны, да. Бесплатный сертификат обходится потребителю заведомо дешевле, чем платный. Но, с другой стороны, бесплатные сертификаты всё же имеют некоторые минусы. Во-первых, бесплатные сертификаты имеют сравнительно короткий срок действия. По истечении его сертификату требуется перевыпуск. Происходит это постоянно через определённые промежутки времени. Во-вторых, Удостоверяющие Центры, выпускающие платные SSL-сертификаты, проверяют владельцев доменов. Тем самым они формируют более высокое доверие к сайту со стороны поисковых систем и пользователей. В третьих, преимуществом платных сертификатов является наличие финансовых обязательств Центра Сертификации перед доменом. Другими словами, при утечке с ресурса пользовательских данных пострадавший сайт получит компенсацию. Конечно, при условии, что на сайте использовался платный сертификат.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Как открыть буфер обмена на windows 10 pro
  • C windows system32 drivers drmk sys
  • What is msc in windows
  • Как устанавливать курсоры на windows 11
  • Экспорт пользователей windows 2003