Короче говоря, это не поддерживается. Ответ ниже может сэкономить кому-то время, пытаясь понять, как сделать эту работу
Ответ службы технической поддержки Microsoft следующий:
Симптом
Класс ProvisioningDeviceClient не работает в Azure
Причина
Причина ошибки заключается в том, что код пытается записать в промежуточный ЦС.
https://www.fuget.org/packages/Microsoft.Azure.Devices.Provisioning.Client/1.2.2/lib/netstandard2.0/Microsoft.Azure.Devices.Provisioning.Client.dll/Microsoft.Azure.Devices.Provisioning.Client/CertificateInstaller?code=true#M%3AMicrosoft.Azure.Devices.Provisioning.Client.CertificateInstaller.EnsureChainIsInstalled%28System.Security.Cryptography.X509Certificates.X509Certificate2Collection%29
_installedCertificates = new HashSet<string>();
_lock = new object();
try {
using (X509Store x509Store = new X509Store(StoreName.CertificateAuthority, StoreLocation.CurrentUser)) {
x509Store.Open(OpenFlags.ReadOnly);
X509Certificate2Enumerator enumerator = x509Store.Certificates.GetEnumerator();
while (enumerator.MoveNext()) {
X509Certificate2 current = enumerator.Current;
_installedCertificates.Add(current.Thumbprint);
}
}
} catch (Exception ex) {
if (Logging.IsEnabled)
Logging.Error(null, FormattableStringFactory.Create("{0} failed to read store: {1}.", "CertificateInstaller", ex), ".cctor");
}
https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.x509certificates.storename?view=netframework-4.7.2
CertificateAuthority
3
Хранилище сертификатов X.509 для промежуточных центров сертификации (ЦС).
Песочница обычно предназначена для ограничения доступа к общим компонентам Windows. К сожалению, многие основные компоненты Windows были спроектированы как общие компоненты: реестр, криптография и графические подсистемы, среди прочих.
Пожалуйста, обратитесь к документу ниже, который имеет более подробное объяснение.
https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox#general-sandbox-restrictions
Разрешение
Другой вариант - использовать контейнеры Windows, но в данный момент это в предварительном просмотре.
https://azure.microsoft.com/en-us/blog/announcing-the-public-preview-of-windows-container-support-in-azure-app-service/
AppService не может открыться в Промежуточном хранилище для установки цепочки сертификатов. Единственный способ установить промежуточную цепочку сертификатов - загрузить сертификат, содержащий цепочку. Если в веб-приложении запущена виртуальная машина, у вас есть полный контроль и вы можете делать то, что хотите. Если запустить облачную службу, то можно выполнить задачи запуска. С App Service у вас меньше контроля над дизайном.
https://docs.microsoft.com/en-us/azure/app-service/overview-compare
Вы точно правильно указали код DPS в местном хранилище сертификатов. Как вы упомянули, он был добавлен в DPS SDK, созданный в качестве альтернативного решения.