我已经开始使用Ubuntu(18.04)托管一些简单的.NET Core 2.2网站。部署并启动该站点后,我将看到以下内容:
警告:Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager [59]用户配置文件和HKLM注册表均不可用。使用临时密钥存储库。当应用程序退出时,受保护的数据将不可用。警告:Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager [35]未配置XML加密器。密钥{c45288a6-63f8-4408-abdb-7894fb6d4e45}可以以未加密形式持久存储。托管环境:生产内容根目录路径:/ var / www / mysite现在正在监听:http:// localhost:5010 应用程序已启动。按Ctrl + C关闭。警告:Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware [3]无法确定用于重定向的https端口。
那么,为Linux(以及可能也适用于Windows)实现密钥存储提供程序的最佳且安全的方法是什么?有没有现有的?有什么例子吗?
PS。是的,我看过此文档-ASP.NET Core中的密钥存储提供程序。
我们使用Azure ATS作为关键存储库来实现此方法以及支持负载平衡方案的方法。
配置看起来像这样:
string storageUrl = "https://[your account here].blob.core.windows.net";
string sasToken = "?sv=20XX-XX-XX&ss=x&srt=xxx&sp=xxxx&...";
string containerName = "data-protection-XXXX-XXXX-container";
string blobName = "data-protection-XXXX-XXXX-blob";
// Create the new Storage URI
Uri storageUri = new Uri($"{storageUrl}{sasToken}");
//Create the blob client object.
CloudBlobClient blobClient = new CloudBlobClient(storageUri);
//Get a reference to a container. Create it if it does not exist.
CloudBlobContainer container = blobClient.GetContainerReference(containerName);
// (NOTE: internal library, do not use in your code)
AsyncHelper.Guarded<bool>(() => { return container.CreateIfNotExistsAsync(); });
services.AddDataProtection()
.SetApplicationName("[your application name here]")
.PersistKeysToAzureBlobStorage(container, blobName)
.SetDefaultKeyLifetime(new TimeSpan(365 * 10, 0, 0, 0, 0));
注意:配置数据保护以提高安全性时,请查看加密选项。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。