Ошибка сертификата в локальной azure сервисной матрице - PullRequest
1 голос
/ 06 января 2020

Попытка запустить Azure Служба Fabri c в моем локальном приложении, все службы работают, кроме той, которая выбрасывает сертификат, не может быть пустым исключением. Ниже приведен фрагмент кода для получения сертификата.

Установлен сертификат на моем локальном для локальной машины и текущего пользователя.

enter image description here

enter image description here

/// <summary>
/// Finds the ASP .NET Core HTTPS development certificate in development environment. Update this method to use the appropriate certificate for production environment.
/// </summary>
/// <returns>Returns the ASP .NET Core HTTPS development certificate</returns>
private static X509Certificate2 GetCertificateFromStore()
{
    string aspNetCoreEnvironment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
    if (string.Equals(aspNetCoreEnvironment, "Development", StringComparison.OrdinalIgnoreCase))
    {
        const string aspNetHttpsOid = "1.3.6.1.4.1.311.84.1.1";
        const string CNName = "CN=localhost";
        using (X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine))
        {
            store.Open(OpenFlags.ReadOnly);
            var certCollection = store.Certificates;
            var currentCerts = certCollection.Find(X509FindType.FindByExtension, aspNetHttpsOid, true);
            currentCerts = currentCerts.Find(X509FindType.FindByIssuerDistinguishedName, CNName, true);
            return currentCerts.Count == 0 ? null : currentCerts[0];
        }
    }
    else
    {
        throw new NotImplementedException("GetCertificateFromStore should be updated to retrieve the certificate for non Development environment");
    }
}

1 Ответ

0 голосов
/ 06 января 2020

Вы должны попытаться скопировать файлы сертификата в место, где учетная запись службы Service Fabri c может забрать их при запуске и либо прочитать их напрямую, либо записать их в **new X509Store(StoreName.My, StoreLocation.CurrentUser)** для последующего использования.

Проверьте это, сделайте c для дальнейшей справки:

https://github.com/dotnet/corefx/blob/master/Documentation/architecture/cross-platform-cryptography.md#x509store

и убедитесь, что вы не следуете одному из упомянутых сценариев.

Вы можете использовать [SetupEntryPoint][1], который запускается как пользователь с **AccountType="LocalSystem"** для запуска SetupEntryPoint

В качестве альтернативы, вы можете использовать Azure хранилище ключей, чтобы сохранить сертификат и затем прочитать его оттуда. Пример кода можно найти здесь:

https://docs.microsoft.com/en-us/azure/service-fabric/how-to-managed-identity-service-fabric-app-code#accessing -key-vault-from-a-service-fabri c -application-using-managed-identity

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...