5.10. 在配置文件中加密密码
默认情况下,AMQ Broker 将所有密码以纯文本形式存储在配置文件中。务必确保确保确保具有正确权限的所有配置文件,以防止未经授权的访问。您还可以加密或 屏蔽 纯文本密码,以防止不需要的查看器读取它们。
5.10.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.10.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: 3a34fd21b82bf2a822fa49a8d8fa115d
Copy 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.10.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>
$ <broker_instance_dir>/bin/artemis mask --key <key> <password>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告确保您在运行
mask
工具时指定的密钥字符串记录来加密密码。您必须在环境变量中配置相同的键值,以允许代理解密密码。有关在配置文件中加密密码的更多信息,请参阅 第 5.10.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 run
Copy 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_KEY
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果在启动代理后取消设置
ARTEMIS_DEFAULT_SENSITIVE_STRING_CODEC_KEY
环境变量,您必须在每次启动代理前将其再次设置为同一密钥字符串。