Итак, я следовал официальному руководству Microsoft (https://docs.microsoft.com/el-gr/aspnet/core/security/data-protection/implementation/key-storage-providers?view=aspnetcore-2.2&tabs=visual-studio) для шифрования данных и их хранения в базе данных с использованием Entity Framework Core, но я не могу заставить его работать на нескольких машинах. Поэтому я использовал реализацию Entity Framework Core, потому что в руководстве говорится: «С этим пакетом ключи могут совместно использоваться несколькими экземплярами веб-приложения». Приложение прекрасно работает при использовании его из развернутой версии, например, xyz.com, но оно не позволяет мне вмешиваться с localhost Будет ли проблема после этого, когда у моей виртуальной машины будет максимум, и я хочу добавить еще одну? Если да, то как я могу заставить ее работать как на развернутом сайте, так и на разных машинах? Нет учебника, который реализует это, я искал везде. Большое спасибо.
services.AddDataProtection()
.UseCryptographicAlgorithms(
new AuthenticatedEncryptorConfiguration()
{
EncryptionAlgorithm = EncryptionAlgorithm.AES_256_CBC,
ValidationAlgorithm = ValidationAlgorithm.HMACSHA256,
}
).PersistKeysToDbContext<DataContext>();
Обновление 12-6-2019
Итак, я следовал документации Microsoft (https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/implementation/key-encryption-at-rest?view=aspnetcore-2.2)
и в нем говорится:
«Если приложение распространяется на несколько компьютеров, может быть удобно распределить общий сертификат X.509 по машинам и настроить размещенные приложения для использования сертификата для шифрования ключей в состоянии покоя»
Я сгенерировал сертификат x.509, используя это руководство:
(https://www.youtube.com/watch?v=1xtBkukWiek)
Мой обновленный код:
services.AddDataProtection()
.UseCryptographicAlgorithms(
new AuthenticatedEncryptorConfiguration()
{
EncryptionAlgorithm = EncryptionAlgorithm.AES_256_CBC,
ValidationAlgorithm = ValidationAlgorithm.HMACSHA256,
}
)
// )
.ProtectKeysWithCertificate(new X509Certificate2("wibit-test-cert.pfx", "password"))
.PersistKeysToDbContext<DataContext>();
При тестировании на моей локальной машине все работает нормально, но при развертывании я получаю эту ошибку:
ошибка: «Системе не удается найти указанный файл»
Я пробовал несколько способов исправить это, включая _hostingEnvironment.ContentRootPath или WebRootPath. Оба эти способа и тот, который я использую в обновленном коде, работают на моем компьютере, но не в развернутом приложении.
Есть какие-нибудь подсказки?