5.9. 在配置文件中加密密码


默认情况下,AMQ Broker 将所有密码保存在配置文件中,以纯文本形式保存。确保保护具有正确权限的所有配置文件,以防止未经授权的访问。您还可以加密或 屏蔽 纯文本密码,以防止不需要的查看器读取它们。

5.9.1. 关于加密密码

已加密或 屏蔽 的,密码是纯文本密码的加密版本。加密的版本由 AMQ Broker 提供的 mask 命令行工具生成。有关 mask 工具程序的更多信息,请参阅命令行帮助文档:

$ <broker_instance_dir>/bin/artemis help mask

要屏蔽密码,请将其纯文本值替换为加密的值。屏蔽的密码必须以标识符 ENC () 包装,以便在需要实际值时解密。

在以下示例中,配置文件 < broker_instance_dir>/etc/bootstrap.xml 包含 keyStorePasswordtrustStorePassword 参数的屏蔽密码。

<web bind="https://localhost:8443" path="web"
     keyStorePassword="ENC(-342e71445830a32f95220e791dd51e82)"
     trustStorePassword="ENC(32f94e9a68c45d89d962ee7dc68cb9d1)">
    <app url="activemq-branding" war="activemq-branding.war"/>
</web>

您可以在以下配置文件中使用屏蔽的密码。

  • broker.xml
  • bootstrap.xml
  • management.xml
  • artemis-users.properties
  • login.config (用于 LDAPLoginModule

配置文件位于 < broker_instance_dir> /etc

注意

artemis-users.properties 仅支持经过哈希的屏蔽密码。在创建代理时创建用户时,artemis-users.properties 默认包含哈希密码。默认 PropertiesLoginModule 不会解码 artemis-users.properties 文件中的密码,而是哈希输入并比较密码验证的两个散列值。将散列密码改为屏蔽的密码不允许访问 AMQ Broker 管理控制台。

broker.xmlbootstrap.xmlmanagement.xmllogin.config 支持已屏蔽但未被哈希的密码。

5.9.2. 在配置文件中加密密码

以下示例演示了如何在 broker.xml 配置文件中屏蔽 cluster-password 的值。

流程

  1. 在命令提示符下,使用 mask 工具加密密码:

    $ <broker_instance_dir>/bin/artemis mask <password>
    result: 3a34fd21b82bf2a822fa49a8d8fa115d
  2. 打开 & lt;broker_instance_dir> /etc/broker.xml 配置文件,包含您要屏蔽的纯文本密码:

    <cluster-password>
      <password>
    </cluster-password>
  3. 将纯文本密码替换为加密值:

    <cluster-password>
      3a34fd21b82bf2a822fa49a8d8fa115d
    </cluster-password>
  4. 使用标识符 ENC () 嵌套加密值:

    <cluster-password>
      ENC(3a34fd21b82bf2a822fa49a8d8fa115d)
    </cluster-password>

配置文件现在包含加密的密码。因为密码被嵌套为 ENC () 标识符,所以 AMQ Broker 会在使用前对其进行解密。

其他资源

5.9.3. 设置 codec 密钥以加密和解密密码

需要使用 codec 来加密和解密密码。如果没有配置自定义 codec,mask 工具使用默认 codec 来加密密码,AMQ Broker 会使用相同的默认 codec 来解密密码。codec 配置了一个默认密钥,它提供给底层加密算法来加密和解密密码。使用默认密钥存在风险,因为恶意者可能会使用该密钥来解密您的密码。

当您使用 mask 工具加密密码时,您可以指定您自己的密钥字符串以避免使用默认的 codec 密钥。然后,您必须在 ARTEMIS_DEFAULT_SENSITIVE_STRING_CODEC_KEY 环境变量中设置相同的密钥字符串,以便代理可以解密密码。在环境变量中设置密钥可以更加安全,因为它不会在配置文件中保留。另外,您可以在启动代理前立即设置密钥,并在代理启动后立即取消设置它。

流程

  1. 使用 mask 实用程序加密配置文件中的每个密码。对于 key 参数,指定用于加密密码的字符串。使用相同的密钥字符串加密每个密码。

    $ <broker_instance_dir>/bin/artemis mask --key <key> <password>
    警告

    确保保留了您在运行 mask 工具以加密密码时指定的密钥字符串记录。您必须在环境变量中配置相同的键值,以允许代理解密密码。

    有关在配置文件中加密密码的详情请参考 第 5.9.2 节 “在配置文件中加密密码”

  2. 从命令提示符,将 ARTEMIS_DEFAULT_SENSITIVE_STRING_CODEC_KEY 环境变量设置为您在加密每个密码时指定的密钥字符串。

    $ export ARTEMIS_DEFAULT_SENSITIVE_STRING_CODEC_KEY= <key>
  3. 启动代理。

    $ ./artemis run
  4. 取消设置 ARTEMIS_DEFAULT_SENSITIVE_STRING_CODEC_KEY 环境变量。

    $ unset ARTEMIS_DEFAULT_SENSITIVE_STRING_CODEC_KEY
    注意

    如果在启动代理后取消设置 ARTEMIS_DEFAULT_SENSITIVE_STRING_CODEC_KEY 环境变量,则必须在每次启动代理前将其再次设置为相同的密钥字符串。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.