5.9. 加密配置文件中的密码
默认情况下,AMQ Broker 将所有密码以纯文本形式存储在配置文件中。务必使用正确的权限保护所有配置文件,以防止未经授权的访问。您还可以加密或 屏蔽,即纯文本密码,以防止不需要的查看器读取它们。
5.9.1. 关于加密密码
加密的或 屏蔽,密码是纯文本密码的加密版本。加密的版本由 AMQ Broker 提供的 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
。
pata-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>
使用加密值替换 plain-text 密码:
<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,掩码实用程序会
使用默认 codec 来加密密码和 AMQ Broker 使用相同的默认 codec 来解密密码。codec 配置了一个默认密钥,它提供给底层加密算法以加密和解密密码。使用默认密钥会带来风险,恶意人员可能曾使用该密钥来解密您的密码。
当您使用 掩码
实用程序加密密码时,您可以指定自己的密钥字符串以避免使用默认的 codec 键。然后,您必须在 ARTEMIS_DEFAULT_SENSITIVE_STRING_CODEC_KEY
环境变量中设置相同的字符串,以便代理可以解密密码。在环境变量中设置密钥会使它更安全,因为它不会保留在配置文件中。另外,您可以在启动代理前立即设置密钥,并在代理启动后立即设置它。
流程
使用
mask
实用程序加密配置文件中的每个密码。对于key
参数,指定用于加密密码的字符串。使用相同的密钥字符串来加密各个密码。$ <broker_instance_dir>/bin/artemis mask --key <key> <password>
警告确保您在运行
掩码
实用程序加密密码时指定的 key 字符串记录。您必须在环境变量中配置相同的键值,以允许代理解密密码。有关在配置文件中加密密码的详情请参考 第 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
环境变量,则必须在后续时间启动代理前将其重新设置为同一密钥字符串。