Ошибка сертификата при размещении приложения в службе приложений Azure для Linux (Шаблон приглашения)

#azure #azure-web-app-service #ssl-certificate #azure-ad-b2c #azure-ad-b2c-custom-policy

Вопрос:

Я пытаюсь развернуть приложение «Регистрация с приглашением по электронной почте» (https://github.com/azure-ad-b2c/samples/tree/master/policies/invite) в службе приложений на базе Linux. Я уже загрузил свой сертификат в виде файла PFX.

По этой ссылке(https://docs.microsoft.com/en-us/azure/app-service/configure-ssl-certificate-in-code#load-certificate-in-linuxwindows-containers) частные сертификаты в контейнерах Linux хранятся в файле /var/ssl/private.

Я дважды проверил и открыл сеанс SSH в своей службе приложений, и я нашел свой сертификат privete в этой папке: 4E*********************************B8.p12

Итак, мне нужно заменить этот фрагмент кода в HomeController и OidcController:

 public HomeController(ILogger<HomeController> logger, IOptions<AppSettingsModel> appSettings, IWebHostEnvironment hostingEnvironment)
    {
        this.AppSettings = appSettings.Value;
        this.HostingEnvironment = hostingEnvironment;
        this._logger = logger;
        // Sample: Load the certificate with a private key (must be pfx file)
        SigningCredentials = new Lazy<X509SigningCredentials>(() =>
        {
            X509Store certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser);
            certStore.Open(OpenFlags.ReadOnly);
            X509Certificate2Collection certCollection = certStore.Certificates.Find(
                                        X509FindType.FindByThumbprint,
                                        this.AppSettings.SigningCertThumbprint,
                                        false);
            // Get the first cert with the thumb-print
            if (certCollection.Count > 0)
            {
                return new X509SigningCredentials(certCollection[0]);
            }
            throw new Exception("Certificate not found");
        });
    }
 

Согласно документации, я заменил его на:

 public  HomeController(ILogger<HomeController> logger, IOptions<AppSettingsModel> appSettings, IWebHostEnvironment hostingEnvironment)
    {
        string finalPath = $"/var/ssl/private/<MYCERTIFICATETHUMBPRINT>.p12";
        var bytes = System.IO.File.ReadAllBytes(finalPath);
        var cert = new X509Certificate2(bytes);
    }
 

Но когда я пытаюсь отправить приглашение по электронной почте или пытаюсь открыть конечную точку метаданных (https://******.azurewebsites.net/.well-known/openid-configuration) Я получаю следующую ошибку:

Внутренняя ошибка сервера: При обработке запроса возникло необработанное исключение. Исключение NullReferenceException: Ссылка на объект не установлена на экземпляр объекта.

Не могли бы вы указать мне правильное направление?

Спасибо

Комментарии:

1. В какой именно строке произошло исключение ? Не могли бы вы предоставить более подробную информацию об ошибках ?