Долго искал, как безболезненно настроить SSL сертификат от Let's Encrypt на Microsoft Azure. В рунете с этим оказались проблемы, но на просторах большого интернета нашлась очень и очень годная статья, по которой мне удалось настроить это шайтанство. Думаю, для новичков, у которых проблемы с иностранными языками (бывает такое, но все мы учимся), перевод статьи пригодится.
Итак, начнем.
1. Сервисный план обслуживания нашего веб-приложения на Azure должен быть не ниже «Стандартного» (проще говоря, любой, кроме Basic — Базового).
2. Свой домен. Для настройки SSL сертификата необходим кастомный домен, который можно прикрутить в меню «Пользовательские домены» в панели настроек своего приложения. Настроить SSL сертификат для домена, подобного .azurewebsites.net нельзя.
3. Создаем аккаунт хранилища данных. Подробно описано в этой статье, но она на англ. языке. По-простому: . Создаем.
4. Настраиваем
5. Настраиваем доступ к нашим службам
Устанавливаем и запускаем PowerShell от имени администратора. Устанавливаем AzurePowerShellModule
# Install the Azure Resource Manager modules from the PowerShell Gallery
Install-Module AzureRM
# Install the Azure Service Management module from the PowerShell Gallery
Install-Module Azure
# To make sure the Azure PowerShell module is available after you install
Get-Module -ListAvailable Azure*
Import-Module "C:Program FilesWindowsPowerShellModulesAzureXXXXazure.psd1"
Import-Module "C:Program FilesWindowsPowerShellModulesAzureXXXXexpressrouteexpressroute.psd1"
Логинимся в Azure
Login-AzureRmAccount
Задаем логин-пароль для дальнейшей авторизации приложения Let's Encrypt:
$uri = 'http://{some random name}'
$password = '{some strong password}'
Выполняем несколько магических комманд)))
$app = New-AzureRmADApplication -DisplayName {some display name} -HomePage $uri -IdentifierUris $uri -Password $password
New-AzureRmADServicePrincipal -ApplicationId $app.ApplicationId
New-AzureRmRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $app.ApplicationId
$app.ApplicationId
Теперь у нас есть
ClientSecret = $password
ClientID = ApplicationID
Запомним их.
Установка Let's Encrypt
Идем в SCM консоль (https://{your site name}.scm.azurewebsites.net), переходим в раздел Расширения(Site Extentions), выбираем пункт «Галерея» и ищем там модуль Let's Encrypt Azure. Устанавливаем!
После установки модуля перезапускаем сайт (кнопка Restart Site), и запускаем модуль. Теперь нам осталось его настроить.
Заполняем поля:
letsencrypt:Tenant
letsencrypt:SubscriptionId
letsencrypt:ClientId
letsencrypt:ClientSecret
letsencrypt:ResourceGroupName
Следующим образом:
letsencrypt:Tenant с метки #1.
letsencrypt:SubscriptionId из метки #2
letsencrypt:ResourceGroupName из метки #3
letsencrypt:ClientId = наш ClientID, который мы помним
letsencrypt:ClientSecret = наш ClientSecret, который мы помним и никому не говорим
Теперь, в настройках приложения на портале Azure должны быть видны настройки нашего расширения:
Довольные собой, в SCM консоли смело жмякаем «Next» и идём выпускать сертификат.
Тут все просто — из выпадающего меню выбираем домен, для которого выпускаем сертификат, и указываем почту, какую хотим.
Заканчиваем настройку, на всякий случай перезапускаем сайт (это же Microsoft! Переустановка часто помогает от зависаний, багов, гайморита и простого чиха).
Если все прошло хорошо — поздравляем, теперь у вас есть бесплатный SSL сертификат, котируемый почти всеми браузерами.
И это еще не все!
К сожалению, не удалось это проверить (так как настраивал все на днях и срок перевыпуска домена еще не настал), но предполагается, что сертификат автоматически перевыпустится, когда истечет срок его действия. В любом случае, зайти и перевыпустить сертификат можно буквально одним нажатием кнопки, но предполагается (и я искренне на это надеюсь), что перевыпуск сертификата уже настроен.
P.S. Знающих людей прошу поделиться недостающей информацией, чтобы статья была более полной.
Автор: Liudar