Как настроить Let’s Encrypt SSL для веб-приложения Azure
Хотя Azure предоставляет множество инструментов, в нем есть не все. Мы рассмотрим, как можно настроить функциональный Let’s Encrypt SSL для любого веб-приложения Azure, чтобы обеспечить необходимый уровень безопасности для всех стандартных онлайн-операций.
Что такое Let’s Encrypt?
Прежде всего, давайте уберем Let’s Encrypt с дороги. Итак, что это? Это автоматизированный, бесплатный, открытый центр сертификации. Это означает, что вы можете получить совершенно бесплатные сертификаты SLL и изменить структуру URL по умолчанию с HTTP:// на HTTP://.
Но в чем подвох? Неужели все так просто? Ну, сертификаты SSL длятся всего 90 дней, а не несколько лет, как другие сертификаты. Тем не менее, на это есть причина. Это связано с тем, что автоматизация поощряется, и вы можете сделать свой опыт использования SSL незапоминающимся (если у вас есть некоторые сценарии или фоновый процесс, который автоматически обновляет и устанавливает сертификаты).
В настоящее время действительно нет причин не использовать Let’s Encrypt, и это очевидно из-за того, что большинство использует его в различных отраслях и связанных с ними веб-приложениях.
Предпосылки для настройки:
- Активная учетная запись Azure. (Студенты могут получить бесплатные ресурсы Azure.)
- Любое веб-приложение, которое размещается через службу приложений. Стек не имеет значения.
- Пользовательская запись DNS, указывающая на веб-приложение.
В идеальном мире ваша служба приложений и план службы приложений находятся в одной группе ресурсов. Но можно обойтись и без этого.
Шаг 1. Учетная запись хранения для веб-заданий
Итак, первый шаг — создать учетную запись хранения Azure, которая является расширением, которое позволит нам продлевать сертификацию каждые 90 дней с помощью веб-заданий Azure.
Аккаунт не должен принадлежать BlobStorage, потому что он не будет работать. Это должно быть либо «Storage», либо «StorageV2».
Теперь, когда это сделано. Вы добавите два отдельных параметра: «AzureWebJobsDashboard» и «AzureWebJobsStorage» со строкой, которая связывает их с ранее созданной учетной записью хранения.
Строка может выглядеть так:
DefaultEndpointsProtocol=https;AccountName=[ваш_аккаунт];AccountKey=[ваш_ключ];
Шаг 2: Автоматизация процесса
Чтобы предыдущее расширение работало без нашего вмешательства, мы должны создать «Субъект-службу Azure», который работает на основе понятия делегирования через запись Azure AD.
Перейдите к Azure Active Directory, в которой вы хотите создать новое приложение. На панели выберите «Регистрация приложений».
Вы можете возиться с настройками по своему усмотрению, но это все, что касается субъекта-службы.
Шаг 3: Расширение Let’s Encrypt
Теперь, когда у вас есть все второстепенные предварительные условия, вы можете, наконец, установить расширение и настроить его соответствующим образом.
Перейдите в «Службу приложений» и найдите расширение Azure Let’s Encrypt с помощью «SJKP». После его установки вы можете приступить к настройке.
Чтобы настроить расширение, вам нужно перейти на страницу «Дополнительные инструменты» в «Службе приложений». Вы можете найти его, выполнив поиск в строке поиска, и, вероятно, вы попадете на такой сайт: https://yourdomain.scm.azurewebsite.net.
Чтобы получить доступ к настройкам, нажмите кнопку Расширения сайта и нажмите Запустить. Теперь должна открыться страница конфигурации, и у вас будут следующие параметры.
- Владелец: директор Azure AD, в котором был создан ваш субъект-служба.
- ClientID: тот же идентификатор клиента, что и раньше.
- ClientSecret: тот же секрет клиента, что и раньше.
- ResourceGroupName: название группы ресурсов службы приложений, которую вы используете.
- SubscriptionID: идентификатор вашей подписки, которую вы используете для группы ресурсов.
- Обновить настройки приложения: всегда устанавливайте значение True, чтобы сохранить все ваши настройки. В противном случае параметры WebsJob для установки новых сертификатов будут недоступны.
- ServicePlanResourceGroupName. Если служба приложений и план обслуживания находятся в одной группе, имя будет таким же, как и ResourceGroupName. В противном случае вы введете название группы ресурсов фактического расположения Тарифного плана.
После настройки всех параметров вы перейдете к обзору сертификатов, привязок SSL и пользовательских доменов. Поскольку вам все еще нужно их сгенерировать, вы можете выбрать свои домены для запроса и отправить «Получить запрос» для SSL-сертификата.
Но прежде чем вы это сделаете, вы должны добавить свой адрес электронной почты, чтобы вы могли получать оповещения, если что-то пойдет не так с сертификатом (например, он устарел или не обновлен).
И это все. Теперь все настроено, и вы можете насладиться наградой за выполнение задания самостоятельно.
Возможные проблемы
Поскольку расширению требуется доступ к вашим страницам для авторизации домена, убедитесь, что URL-адрес общедоступен через HTTP://yourdomain.com/.well-known/acme-challenge/.
Если возникает ошибка и URL-адрес не достигается, вероятно, у вас есть набор правил в файле web.config, который запрещает доступ, или ваш HTTPS применяется через настройки службы приложений.
Кроме того, поскольку Let’s Encrypt использует механизм HTTP-01 в ACME, он поместит случайный токен в файл на вашем веб-сервере, а затем попытается получить его через HTTP. Если вы установите для веб-приложения только https, запрос будет отклонен, чего вы хотите избежать.