Добавление корневого центра сертификации в службу приложений Azure для проверки подлинности сертификата клиента

#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:

К сожалению, невозможно добавить корневые сертификаты в службу приложений.

введите описание изображения здесь

Для получения более подробной информации вы можете обратиться к ответу в этом сообщении.

Добавление доверия к хранилищу корневых сертификатов в службе приложений