跳转到主要内容
使用主密钥来保护存储在端口配置中的敏感加密数据,如密码、API 密钥和连接凭据。默认情况下, 提供内置主密钥,但具有严格安全要求的组织可以定义自定义主密钥,以保持对其加密基础设施的完全控制。这使你能够轻松轮换用户定义的主密钥。 主密钥可以有两种格式:AES 密钥文件中的随机字符串,或带有可选密码保护的 PFX (PKCS#12) 证书文件。自定义主密钥使企业能够将 的加密实践与其内部安全策略对齐、符合监管要求,并与现有的密钥管理系统集成。
失去对自定义主密钥的访问权限会导致 无法解密存储的凭据和配置数据。在配置自定义主密钥之前,应实施安全的密钥备份和恢复程序。

了解数据加密密钥和主密钥

加密是使用密钥(一段数据)将明文转换为密文。当你首次使用应用程序时, 会生成一个随机密钥,该密钥不会以明文形式保存在任何位置。这就是数据加密密钥(DEK)。所有数据都使用此密钥进行加密。 主密钥(也称为密钥加密密钥或 KEK)不直接加密数据。相反,它是一个用于加密其他密钥的包装器。 也提供了内置主密钥,但如上所述,你也可以改为定义自己的主密钥。本主题的其余部分介绍如何创建或更新用户定义的主密钥。

定义自定义主密钥

定义主密钥的方式因 版本类型而异。
  • **跨平台版:**在 arc.properties 配置文件中使用 cdata.encryption.key 属性定义密钥。如果要定义 PFX 密钥且需要密码,请在 cdata.encryption.key.password 属性中进行设置。或者,如果使用 AES 密钥,可以使用 APP_KEY 环境变量来提供密钥文件路径。
  • **.NET 版:**如果在 Web.Config 文件的 appSettings 元素中找不到 AppKey 设置,则主密钥加密处于禁用状态。要启用它,请在 Web.Config 文件的 AppKey 设置元素中设置文件路径。如果要定义 PFX 密钥且需要密码,请在 AppKeyPassword 设置中进行设置。以下是需要添加到 Web.Config 中的 XML 片段:

更改主密钥

如有必要,可以更换主密钥文件。 始终使用你提供的密钥进行加密。密钥文件由系统安全地管理和备份,该过程旨在为用户降低风险和复杂度。要更改主密钥,请确保已停止服务器,然后使用以下选项之一:
  • **跨平台版:**管理员可以使用 arc.jar -ChangeMasterKey <new-master-key-file-path> 命令轮换加密密钥,而不会中断操作。如果要将主密钥更改为 PFX 文件且需要密码,请使用 arc.jar -ChangeMasterKey <new-master-key-file-path> <new-master-key-password> 命令。
  • **.NET 版:**管理员必须使用 CData.exe appChangeMasterKey -NewKey <new-master-key-file-path> -@libdir "www\bin" 命令(不要直接修改 Web.Config 文件)。如果要将主密钥更改为 PFX 文件且需要密码,请使用 CData.exe appChangeMasterKey -NewKey <new-master-key-file-path> -NewKeyPassword <new-PFX-password> -@libdir "www\bin" 命令。
在 PFX 证书文件中仅支持 RSA 算法。其他 DSA 或 ECC 证书将被拒绝。

使用安全模式

如果丢失了自定义主密钥,并且需要从其他记录源重新保存配置中的敏感值,可以在安全模式下启动 。这会禁用所有后端自动化服务,并启用非常有限的功能,以便你尝试恢复设置和执行其他任务。要启用安全模式:
  • **跨平台版:**运行 java -jar arc.jar -safemode
  • **.NET 版:**在 Web.Config 文件的 appSettings 元素中添加 <add key="SafeMode" value="true" />