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
包含 keyStorePassword
和 trustStorePassword
参数的屏蔽密码。
<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>
result: 3a34fd21b82bf2a822fa49a8d8fa115d
打开 &
lt;broker_instance_dir> /etc/broker.xml
配置文件,包含您要屏蔽的纯文本密码:<cluster-password> <password> </cluster-password>
将纯文本密码替换为加密值:
<cluster-password> 3a34fd21b82bf2a822fa49a8d8fa115d </cluster-password>
使用标识符
ENC ()
嵌套加密值:<cluster-password> ENC(3a34fd21b82bf2a822fa49a8d8fa115d) </cluster-password>
配置文件现在包含加密的密码。因为密码被嵌套为 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>
警告确保保留了您在运行
mask
工具以加密密码时指定的密钥字符串记录。您必须在环境变量中配置相同的键值,以允许代理解密密码。有关在配置文件中加密密码的详情请参考 第 5.9.2 节 “在配置文件中加密密码”。
从命令提示符,将
ARTEMIS_DEFAULT_SENSITIVE_STRING_CODEC_KEY
环境变量设置为您在加密每个密码时指定的密钥字符串。$ export ARTEMIS_DEFAULT_SENSITIVE_STRING_CODEC_KEY= <key>
启动代理。
$ ./artemis run
取消设置
ARTEMIS_DEFAULT_SENSITIVE_STRING_CODEC_KEY
环境变量。$ unset ARTEMIS_DEFAULT_SENSITIVE_STRING_CODEC_KEY
注意如果在启动代理后取消设置
ARTEMIS_DEFAULT_SENSITIVE_STRING_CODEC_KEY
环境变量,则必须在每次启动代理前将其再次设置为相同的密钥字符串。