Вот уже почти 3 года существует центр сертификации Let’s Encrypt, позволяющий безвозмездно (то есть даром) получить сертификат X.509. С марта этого года поддерживаются даже wildcard сертификаты, позволяющие защищать все поддомены сразу, а не указывая конкретное название для каждого.

Сертификат типа DV (Domain Validation) выдается сроком на 90 дней. Имеется возможность обновлять сертификат (опять же бесплатно – без всяких заманух). Сертификаты более высокого уровня (Organization Validation или Extended Validation) сервисом не выдаются.
Let’s Encrypt использует протокол под названием ACME (Automated Certificate Management Environment). Поблагодарить за возможность получения бесплатного сертификат можно основных спонсоров в лице Electronic Frontier Foundation (EFF), Mozilla Foundation, Akamai, Cisco Systems.

Под катом вы можете прочитать о том, как бесплатно добавить сертификат SSL вашему Azure вебсайту.

Сертификат выдается на 3 месяца и было бы хорошо, если бы он как-то автоматически обновлялся. Azure расширение, которое я вам предлагаю использовать, содержит в себе встроенную фичу, которая с помощью WebJob будет обновлять сертификат, но для ее функционирование необходимо создать Blob storage. Имеется вариант расширения без автоматического обновления сертификата. Оно гораздо проще в настройке. Но я хочу разобрать более сложный вариант. Разобравшись с ним, вы сможете разобраться и с простым вариантом не обновляющим сертификат автоматически.



Самый недорогой вариант репликации это LRS (здесь нам какая-то навороченная репликация не нужна). Модель доступа cool так как доступ к данным будет происходить редко — всего раз в 3 месяца.

Нам необходима строка подключения к blob storage, которую можно найти здесь:



Значение этой строки подключения необходимо сохранить в Application Settings нашего App Service с типом Custom и следующими именами:



Теперь, когда мы создали blob, можно добавить в App Service расширение.



Зайдя в раздел Extensions вашего App Service и кликнув Add+ вы найдете 2 варианта. Один с WebJobs обновляет сертификат автоматически, второй нет. Раз мы создали blob то можем выбрать вариант с WebJobs.



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



Или вариант не для ленивых — ввести в браузерную строку адрес https://имявашегосайта.scm.azurewebsites.net/letsencrypt/

Вам откроется окно со следующими настройками:



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

Значение Tenant и SubscriptionId можно получить, зайдя в раздел биллинга



Кликнуть на подписку



Здесь вы можете увидеть как Subscription ID, так и наименование каталога по умолчанию чуть ниже. Каталог по умолчанию это и есть искомый Tenant.

С ClientID и ClientSecret чуть сложнее. Нам нужно создать своеобразный аккаунт, под которым могут выполнятся какие-то задачи — service principal. Войти в Azure с этим аккаунтом нельзя. Он предназначен только для выполнения каких-то внутренних задач.

Создаем его через Azure Active Directory – App Registrations



Кликаем + New application registration



Из данных созданного приложения уже можно взять Application ID – это искомый ClientID. Заходим в Settings и Keys



Вводим DESCRIPTION создаваемого ключа и нажимаем Save.



Копируем значение VALUE – это ClientSecret.

Service principal создан, но ему необходимо добавить права. Для этого необходимо зайти в группу ресурсов в которой находится App Service. Далее зайти в IAM



И добавить новое разрешение для созданного service principal с ролью Contributor



Теперь у нас есть права и все значения, необходимые для заполнения формы. ResourceGroupName – это имя группы в которой находится вам App Service. ServicePlanResourceGroupName – это имя группы которой находится service plan вашего App Service. Значение SiteSlotName можно не указывать если вы не используете Development Slots в App Service. А вот поставить флажок напротив Update Application Settings нужно.

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

Мотаем дальше на Next и получаем возможность выбрать имена хостов:



Завершив запрос на новый сертификат можно убедится в его работоспособности зайдя на вебсайт и кликнув на замок рядом с сертификатом



Официальный англоязычный мануал можно найти здесь:
How to install and setup Let's Encrypt on Azure Web Apps

Комментарии (3)


  1. x893
    10.10.2018 09:20

    Comodo раздает бесплатные сертификаты на 90 дней (без wildcard) уже 3-4 года.
    Танцев с бубном только немного меньше.


  1. sentyaev
    10.10.2018 21:33

    Скриптом было бы интереснее.


  1. Alkop
    10.10.2018 22:39
    +1

    Классно! Не знал — спасибо!
    Но оч сложно уних как-то :(
    Я использую сейчас это github.com/PKISharp/win-acme — всё проще, только проблема в автопродлении.