更改 ASP.NET 核心数据保护 API 中的证书指纹
Changing the Certificate Thumbprint in ASP.NET Core Data Protection API
我有一个两年前即将开始的项目。两年前开始开发时,我决定将 AWS SSM Parameter Store 与 ASP.NET Core 的数据保护 API 一起使用。到目前为止效果很好,但我面临的问题是数据保护使用的 SSL 证书将在一个月后到期,并且其指纹被硬编码到数据保护中。无论如何我都必须更换它,因为它快要过期了,所以我想弄清楚如何处理它...
这是我目前在项目中配置数据保护的方式:
public static IServiceCollection AddApplicationAmazonSsm(
this IServiceCollection services) => services.TryAddAWSService<IAmazonSimpleSystemsManagement>();
public static IServiceCollection AddApplicationDataProtection(
this IServiceCollection services) {
services.AddApplicationAmazonSsm()
.AddDataProtection()
.SetApplicationName("XYZ")
.ProtectKeysWithCertificate("ABC...")
.PersistKeysToAWSSystemsManager("data-protection",
o => {
o.TierStorageMode = TierStorageMode.AdvancedUpgradeable;
});
return services;
}
该项目已部署到暂存和生产环境。每个环境都有自己的 SSL 通配符证书:
- 分期:
*.beta.xyz.com
.
- 生产:
*.xyz.com
.
然而,每个环境都共享数据保护 SSL 证书:data-protection.xyz.com
。
我打算做的是通过让 data-protection.xyz.com
SSL 证书过期来简化设置,并切换到使用临时和生产 SSL 证书进行数据保护。通过这种方式,我从管理三个 SSL 证书到只管理两个我已经永远更新的证书。我计划通过为指向暂存或生产 SSL 证书指纹的每个环境添加新的 Parameter Store 值来使指纹可配置。由于服务器每晚重新启动,它会在启动时看到更新的参数值并将它们应用于所有应用程序实例。
我有以下问题:
- 这是否会对仅注销当时已登录的任何人(具有旧证书的有效 cookie)产生一般影响,或者这是否会导致应用程序其他地方发生一些其他负面变化?
- 在进行我计划进行的更改之前,还有什么我应该注意的吗?
- 旧的SSL证书更改后已经过期,是否应该在服务器上保留一段时间?
据我所知,数据保护应该只会影响用户登录,如果每个人都只是简单地注销,我可以接受,因为他们可以重新登录。提前致谢!
对于其他上下文,这是 ASP.NET Core 5 项目 运行 在 Windows Server 2019 服务器上。
更新跟进
当我实际将项目发布到登台服务器时,我实际上 运行 进入了重定向循环并注意到数据保护只是一遍又一遍地制作新密钥。经过一番调查,我记得我 运行 两年前用原始证书进入这个,问题是权限。因此,在证书管理控制台中,我授予 Everyone 对证书的权限,一切都按预期开始工作。
因此,请记住在证书上设置正确的权限,以便 ASP.NET Core 可以实际访问它。我选择授予 Everyone 权限,因为有七个应用程序可以访问它,我不想经历单独添加每个应用程序的过程。
我抽出时间对此进行了测试,答案是似乎什么也没有发生。对于我的问题:...
Will this have a general impact of only signing out anyone that was signed in at that time (had a valid cookie with the old certificate), or will this cause some other negative changes elsewhere in the application?
它似乎没有任何负面影响,事实上,当我更改证书指纹、重建项目并重新加载已登录用户的页面时,它甚至没有注销用户。
Is there anything else I should be aware of before making the changes I plan to make?
不像。
Should I keep the old SSL certificate on the server for a period of time after changing and it has expired?
我不知道,但如果我这样做也不会造成任何伤害,所以我会,然后在新证书使用一段时间后最终将其删除。
我有一个两年前即将开始的项目。两年前开始开发时,我决定将 AWS SSM Parameter Store 与 ASP.NET Core 的数据保护 API 一起使用。到目前为止效果很好,但我面临的问题是数据保护使用的 SSL 证书将在一个月后到期,并且其指纹被硬编码到数据保护中。无论如何我都必须更换它,因为它快要过期了,所以我想弄清楚如何处理它...
这是我目前在项目中配置数据保护的方式:
public static IServiceCollection AddApplicationAmazonSsm(
this IServiceCollection services) => services.TryAddAWSService<IAmazonSimpleSystemsManagement>();
public static IServiceCollection AddApplicationDataProtection(
this IServiceCollection services) {
services.AddApplicationAmazonSsm()
.AddDataProtection()
.SetApplicationName("XYZ")
.ProtectKeysWithCertificate("ABC...")
.PersistKeysToAWSSystemsManager("data-protection",
o => {
o.TierStorageMode = TierStorageMode.AdvancedUpgradeable;
});
return services;
}
该项目已部署到暂存和生产环境。每个环境都有自己的 SSL 通配符证书:
- 分期:
*.beta.xyz.com
. - 生产:
*.xyz.com
.
然而,每个环境都共享数据保护 SSL 证书:data-protection.xyz.com
。
我打算做的是通过让 data-protection.xyz.com
SSL 证书过期来简化设置,并切换到使用临时和生产 SSL 证书进行数据保护。通过这种方式,我从管理三个 SSL 证书到只管理两个我已经永远更新的证书。我计划通过为指向暂存或生产 SSL 证书指纹的每个环境添加新的 Parameter Store 值来使指纹可配置。由于服务器每晚重新启动,它会在启动时看到更新的参数值并将它们应用于所有应用程序实例。
我有以下问题:
- 这是否会对仅注销当时已登录的任何人(具有旧证书的有效 cookie)产生一般影响,或者这是否会导致应用程序其他地方发生一些其他负面变化?
- 在进行我计划进行的更改之前,还有什么我应该注意的吗?
- 旧的SSL证书更改后已经过期,是否应该在服务器上保留一段时间?
据我所知,数据保护应该只会影响用户登录,如果每个人都只是简单地注销,我可以接受,因为他们可以重新登录。提前致谢!
对于其他上下文,这是 ASP.NET Core 5 项目 运行 在 Windows Server 2019 服务器上。
更新跟进
当我实际将项目发布到登台服务器时,我实际上 运行 进入了重定向循环并注意到数据保护只是一遍又一遍地制作新密钥。经过一番调查,我记得我 运行 两年前用原始证书进入这个,问题是权限。因此,在证书管理控制台中,我授予 Everyone 对证书的权限,一切都按预期开始工作。
因此,请记住在证书上设置正确的权限,以便 ASP.NET Core 可以实际访问它。我选择授予 Everyone 权限,因为有七个应用程序可以访问它,我不想经历单独添加每个应用程序的过程。
我抽出时间对此进行了测试,答案是似乎什么也没有发生。对于我的问题:...
Will this have a general impact of only signing out anyone that was signed in at that time (had a valid cookie with the old certificate), or will this cause some other negative changes elsewhere in the application?
它似乎没有任何负面影响,事实上,当我更改证书指纹、重建项目并重新加载已登录用户的页面时,它甚至没有注销用户。
Is there anything else I should be aware of before making the changes I plan to make?
不像。
Should I keep the old SSL certificate on the server for a period of time after changing and it has expired?
我不知道,但如果我这样做也不会造成任何伤害,所以我会,然后在新证书使用一段时间后最终将其删除。