You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux环境下ASP.NET Core数据保护密钥存储与加密问题咨询

ASP.NET Core Linux应用认证重启登出问题及密钥配置疑问

问题背景

在Linux上运行的ASP.NET Core应用使用框架自带认证功能时,重部署或重启后用户会被强制登出,同时日志出现以下警告:

[EphemeralXmlRepository] Using an in-memory repository. Keys will not be persisted to storage.
[XmlKeyManager] Neither user profile nor HKLM registry available. Using an ephemeral key repository. Protected data will be unavailable when application exits.
[XmlKeyManager] No XML encryptor configured. Key {...} may be persisted to storage in unencrypted form.

查阅官方文档后得知需添加以下代码持久化密钥:

services.AddDataProtection()
    .PersistKeysToFileSystem(new DirectoryInfo(@"c:\temp-keys\"));

但存在两个疑问需要解答:


疑问1:Linux多用户服务器上,选择哪个目录存储密钥合适?

选择目录需满足专属、安全、持久三个核心要求,推荐方案如下:

  • 优先使用应用专属的系统级目录:比如 /var/lib/[你的应用名称]/keys/,该目录属于系统持久化存储区域,不会被系统自动清理,且默认只有root用户和应用运行用户有权限访问。
  • 禁止使用临时目录(如 /tmp、/var/tmp):这类目录会被系统定期清理,导致密钥丢失,重启后仍会出现用户登出问题。
  • 必须严格设置目录权限:确保只有应用运行用户拥有读/写权限,执行以下命令配置:
    # 创建目录
    sudo mkdir -p /var/lib/your-app-name/keys
    # 变更目录所属用户(替换为你的应用运行用户)
    sudo chown app-user:app-group /var/lib/your-app-name/keys
    # 设置权限为仅所有者可读可写
    sudo chmod 700 /var/lib/your-app-name/keys
    

疑问2:加密相关的具体内容是什么?需加密什么、如何加密、为何要加密?若不遵循建议直接使用上述代码会有什么后果?

需加密什么?

需要加密的是DataProtection生成的密钥文件本身。这些密钥用于加密用户认证Cookie、会话数据、以及应用中通过DataProtection API保护的其他敏感数据。

如何加密?

在Linux环境下,推荐两种可靠的加密方式:

  1. 使用X.509证书加密密钥:
    生成或导入一个用于加密的X.509证书,然后修改代码配置:
    services.AddDataProtection()
        .PersistKeysToFileSystem(new DirectoryInfo("/var/lib/your-app-name/keys"))
        .ProtectKeysWithCertificate("证书指纹或证书主题名称");
    
    密钥会通过证书的公钥加密存储,只有持有对应私钥的主体才能解密使用。
  2. 利用文件系统级加密:
    确保存储密钥的目录所在的磁盘分区已启用文件系统加密(如ext4的加密功能、LUKS磁盘加密),从底层保障密钥文件的安全性。

为何要加密?

密钥是DataProtection系统的核心凭证,一旦密钥明文泄露:

  • 攻击者可伪造用户认证Cookie,冒充任意登录用户;
  • 可解密所有被该密钥保护的敏感数据;
  • 严重破坏应用的身份认证和数据安全体系。

直接使用未加密的代码配置的后果?

密钥文件会以明文形式存储在磁盘上,若服务器被入侵、或其他有权限的用户(如服务器上的其他用户)访问到密钥目录,就能直接获取密钥,进而实施身份冒充、数据解密等攻击行为,带来极高的安全风险。


内容的提问来源于stack exchange,提问作者ygoe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 00:06:04