5.9. 在配置文件中加密密码
默认情况下,AMQ Broker 将所有密码保存在配置文件中,以纯文本形式保存。确保保护具有正确权限的所有配置文件,以防止未经授权的访问。您还可以加密或 屏蔽 纯文本密码,以防止不需要的查看器读取它们。
5.9.1. 关于加密密码 复制链接链接已复制到粘贴板!
已加密或 屏蔽 的,密码是纯文本密码的加密版本。加密的版本由 AMQ Broker 提供的 mask 命令行工具生成。有关 mask 工具程序的更多信息,请参阅命令行帮助文档:
<broker_instance_dir>/bin/artemis help mask
$ <broker_instance_dir>/bin/artemis help mask
要屏蔽密码,请将其纯文本值替换为加密的值。屏蔽的密码必须以标识符 ENC () 包装,以便在需要实际值时解密。
在以下示例中,配置文件 < broker_instance_dir>/etc/bootstrap.xml 包含 keyStorePassword 和 trustStorePassword 参数的屏蔽密码。
<web bind="https://localhost:8443" path="web"
keyStorePassword="ENC(-342e71445830a32f95220e791dd51e82)"
trustStorePassword="ENC(32f94e9a68c45d89d962ee7dc68cb9d1)">
<app url="activemq-branding" war="activemq-branding.war"/>
</web>
<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.xml、bootstrap.xml、management.xml 和 login.config 支持已屏蔽但未被哈希的密码。
5.9.2. 在配置文件中加密密码 复制链接链接已复制到粘贴板!
以下示例演示了如何在 broker.xml 配置文件中屏蔽 cluster-password 的值。
流程
在命令提示符下,使用
mask工具加密密码:<broker_instance_dir>/bin/artemis mask <password>
$ <broker_instance_dir>/bin/artemis mask <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow result: 3a34fd21b82bf2a822fa49a8d8fa115d
result: 3a34fd21b82bf2a822fa49a8d8fa115dCopy to Clipboard Copied! Toggle word wrap Toggle overflow 打开 &
lt;broker_instance_dir> /etc/broker.xml配置文件,包含您要屏蔽的纯文本密码:<cluster-password> <password> </cluster-password>
<cluster-password> <password> </cluster-password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将纯文本密码替换为加密值:
<cluster-password> 3a34fd21b82bf2a822fa49a8d8fa115d </cluster-password>
<cluster-password> 3a34fd21b82bf2a822fa49a8d8fa115d </cluster-password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用标识符
ENC ()嵌套加密值:<cluster-password> ENC(3a34fd21b82bf2a822fa49a8d8fa115d) </cluster-password>
<cluster-password> ENC(3a34fd21b82bf2a822fa49a8d8fa115d) </cluster-password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
配置文件现在包含加密的密码。因为密码被嵌套为 ENC () 标识符,所以 AMQ Broker 会在使用前对其进行解密。
其他资源
- 有关 AMQ Broker 中包含的配置文件的详情,请参考 第 1.1 节 “AMQ Broker 配置文件和位置”。
5.9.3. 设置 codec 密钥以加密和解密密码 复制链接链接已复制到粘贴板!
需要使用 codec 来加密和解密密码。如果没有配置自定义 codec,mask 工具使用默认 codec 来加密密码,AMQ Broker 会使用相同的默认 codec 来解密密码。codec 配置了一个默认密钥,它提供给底层加密算法来加密和解密密码。使用默认密钥存在风险,因为恶意者可能会使用该密钥来解密您的密码。
当您使用 mask 工具加密密码时,您可以指定您自己的密钥字符串以避免使用默认的 codec 密钥。然后,您必须在 ARTEMIS_DEFAULT_SENSITIVE_STRING_CODEC_KEY 环境变量中设置相同的密钥字符串,以便代理可以解密密码。在环境变量中设置密钥可以更加安全,因为它不会在配置文件中保留。另外,您可以在启动代理前立即设置密钥,并在代理启动后立即取消设置它。
流程
使用
mask实用程序加密配置文件中的每个密码。对于key参数,指定用于加密密码的字符串。使用相同的密钥字符串加密每个密码。<broker_instance_dir>/bin/artemis mask --key <key> <password>
$ <broker_instance_dir>/bin/artemis mask --key <key> <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告确保保留了您在运行
mask工具以加密密码时指定的密钥字符串记录。您必须在环境变量中配置相同的键值,以允许代理解密密码。有关在配置文件中加密密码的详情请参考 第 5.9.2 节 “在配置文件中加密密码”。
从命令提示符,将
ARTEMIS_DEFAULT_SENSITIVE_STRING_CODEC_KEY环境变量设置为您在加密每个密码时指定的密钥字符串。export ARTEMIS_DEFAULT_SENSITIVE_STRING_CODEC_KEY= <key>
$ export ARTEMIS_DEFAULT_SENSITIVE_STRING_CODEC_KEY= <key>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动代理。
./artemis run
$ ./artemis runCopy to Clipboard Copied! Toggle word wrap Toggle overflow 取消设置
ARTEMIS_DEFAULT_SENSITIVE_STRING_CODEC_KEY环境变量。unset ARTEMIS_DEFAULT_SENSITIVE_STRING_CODEC_KEY
$ unset ARTEMIS_DEFAULT_SENSITIVE_STRING_CODEC_KEYCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果在启动代理后取消设置
ARTEMIS_DEFAULT_SENSITIVE_STRING_CODEC_KEY环境变量,则必须在每次启动代理前将其再次设置为相同的密钥字符串。