代码之家  ›  专栏  ›  技术社区  ›  Gup3rSuR4c

在ASP。NET核心数据保护API

  •  0
  • Gup3rSuR4c  · 技术社区  · 3 年前

    我两岁的时候就要做一个项目了。两年前,当它开始开发时,我决定将AWS SSM参数库与ASP一起使用。NET核心的数据保护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 .

    我计划做的是通过让 数据保护xyz.com SSL证书过期,并切换到使用临时SSL证书和生产SSL证书进行数据保护。通过这种方式,我从管理三个SSL证书变成了只管理两个证书,无论如何我都要永久续订。我计划通过为每个指向暂存或生产SSL证书指纹的环境添加一个新的ParameterStore值来配置指纹。由于服务器每晚都会重新启动,因此在启动时会看到更新的参数值,并将其应用于所有应用程序实例。

    我有以下问题:

    • 这会不会产生只注销当时登录的任何人(使用旧证书拥有有效cookie)的一般影响,或者会导致应用程序中其他地方发生一些负面变化?
    • 在做出我计划做出的改变之前,我还有什么需要注意的吗?
    • 更改后,旧的SSL证书是否应该在服务器上保留一段时间,并且已过期?

    据我所知,数据保护应该只影响用户登录,如果每个人都只是注销,我对此没有意见,因为他们可以重新登录。提前感谢!

    对于其他上下文,这是一个ASP。NET Core 5项目在Windows Server 2019服务器上运行。

    0 回复  |  直到 3 年前
        1
  •  0
  •   Gup3rSuR4c    3 年前

    更新后续行动

    当我真正将项目发布到临时服务器时,我实际上遇到了一个重定向循环,并注意到Data Protection只是一次又一次地生成新密钥。经过一番调查,我记得两年前我带着原始证书遇到了这个问题,问题是权限。因此,在证书管理控制台中,我向Everyone授予了证书的权限,一切都开始按预期进行。

    所以,记得在证书上设置正确的权限,这样ASP。NET Core实际上可以访问它。我选择授予Everyone权限,因为有七个应用程序可以访问它,我不想单独添加每个应用程序。


    我抽出时间测试了一下,结果似乎什么都没发生。对于我的问题:。。。

    这会不会产生只注销当时登录的任何人(使用旧证书拥有有效cookie)的一般影响,或者会导致应用程序中其他地方发生一些负面变化?

    它似乎没有任何负面影响,事实上,当我更改证书指纹、重建项目并重新加载已登录用户的页面时,它甚至没有让用户注销。

    在做出我计划做出的改变之前,我还有什么需要注意的吗?

    看起来不像。

    更改后,旧的SSL证书是否应该在服务器上保留一段时间,并且已过期?

    我不知道,但如果我这样做不会有任何伤害,所以我会的,然后在新证书使用一段时间后最终将其删除。