#azure #azure-web-app-service #client-certificates #mutual-authentication
#azure #azure-web-app-service #клиент-сертификаты #взаимная проверка подлинности
Вопрос:
Я создаю веб-приложение, которое использует клиентские сертификаты для проверки подлинности. Я смог успешно запустить его на виртуальной машине Windows через IIS, хотя мне пришлось добавить корневые центры сертификации для клиентских сертификатов в хранилище сертификатов.
Кажется, я не могу найти место для выполнения аналогичной операции, когда я хочу развернуть это же приложение в службе приложений Azure. Чего мне не хватает?
Спасибо!
Ответ №1:
Вы не можете установить пользовательские корневые сертификаты для службы приложений, но в этом нет необходимости.
Интерфейс веб-приложения Azure не выполняет никакой проверки сертификата. Проверка выполняется только пользовательским кодом. В Asp.Net Ядро обычно вы отправляете проверку в Корпорацию Майкрософт.AspNetCore.Проверка подлинности.Сертификат, который поддерживает пользовательские сертификаты.
Asp.Net Ядро 5
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseAuthentication();
// other items omitted
}
public void ConfigureServices(IServiceCollection services)
{
services
.AddAuthentication()
.AddCertificate(options =>
{
options.ChainTrustValidationMode = X509ChainTrustMode.CustomRootTrust;
options.CustomTrustStore = new X509Certificate2Collection(
new[]
{
new X509Certificate2(Convert.FromBase64String(myRootCertificate)),
});
})
// other items omitted
}
Обратите внимание, что с этими настройками поддерживаются только пользовательские корневые сертификаты. Все корневые сертификаты операционной системы по умолчанию будут проигнорированы.
Asp.Net Ядро 6
В PR 29828 представлен способ добавления цепных сертификатов:
public class CertificateAuthenticationOptions : AuthenticationSchemeOptions
{
/// <summary>
/// Collection of X509 certificates which are added to the X509Chain.ChainPolicy.ExtraStore of the certificate chain.
/// </summary>
public X509Certificate2Collection AdditionalChainCertificates { get; set; } = new X509Certificate2Collection();
}
Эти сертификаты будут использоваться в дополнение к тем, которые поддерживаются операционной системой — в данном случае веб-приложением Azure.
Ответ №2:
К сожалению, невозможно добавить корневые сертификаты в службу приложений.
Для получения более подробной информации вы можете обратиться к ответу в этом сообщении.
Добавление доверия к хранилищу корневых сертификатов в службе приложений