我正在创建一个新的 asp.net core 2 网站,该网站根据本文使用数据保护。作为第一遍,我在没有保护密钥的情况下创建了它(因为我们还没有投入生产),例如
public void ConfigureServices(IServiceCollection services)
{
services.AddDataProtection()
.PersistKeysToFileSystem(new DirectoryInfo(@"\\server\share\directory\"));
}
正如预期的那样,这在我们的测试环境中生成了不受保护的密钥。接下来,我添加了ProtectKeysWithCertificate
扩展名,以便对所有新生成的密钥进行加密,例如
public void ConfigureServices(IServiceCollection services)
{
services.AddDataProtection()
.PersistKeysToFileSystem(new DirectoryInfo(@"\\server\share\directory\"))
.ProtectKeysWithCertificate("thumbprint");
}
然而,我遇到的问题正是......它只是加密新密钥。它很高兴使用原始的非加密密钥,因为它从未被撤销,而且它的到期时间是几个月后。
asp.net 有没有办法检测数据保护的配置已更改并生成新密钥?
本文建议,如果我们需要在预定滚动时间之前启动设置以进行调用,IKeyManager.CreateNewKey
但我不希望每次应用程序启动时都发生这种情况。
正如我所说,这还没有投入生产,所以我确实有从我们的测试环境中手动删除密钥的后备选项,但我很想知道是否还有其他方法。