11.13.6. 在 Java 密钥库里保存和获取加密的敏感字符串
概述
在普通文本配置文件里包含密码和其他敏感字符串是不安全的。JBoss EAP 6 包括了在加密的密钥库里存储并为这些敏感字符串设置掩码,以及在配置文件里使用掩码值。
前提条件
EAP_HOME/bin/vault.sh
应用程序必须可以通过命令行界面来访问。
过程 11.44. 设置 Java 密钥库
运行
vault.sh
命令。运行EAP_HOME/bin/vault.sh
。输入0
启动新的交互式会话。输入保存加密文件的目录。
如果你遵循 第 11.13.2 节 “创建一个 Java 密钥库来存储敏感信息”,你的密钥库将位于主目录里的vault/
下。在多数情况下,将所有加密信息保存在相同的位置是有意义的。这个例子使用了/home/USER/vault/
。注意
不要忘记目录名后面的斜杠。根据操作系统来使用/
或\
。输入密钥库的路径。
输入密钥库文件的完整路径。这个例子使用了/home/USER/vault/vault.keystore
。输入密钥库密码、Vault 名、Sale 和迭代计数。
遇到提示时,输入密钥库密码、Vault 名、Sale 和迭代计数。然后将执行握手操作。选择保存密码的选项。
选择选项0
来保存密码或其他敏感字符串。输入这个值。
遇提示时,将这个值输入两次。如果两次的值不匹配,会提示你再次输入。输入 Vault Block。
输入 Vault Block,输入属性名称。
输入你在保存的属性的名称。一个例子就是password
。结果类似于下面的信息表示这个属性已经被保存了。
安全的属性值已被存储在库里。
安全的属性值已被存储在库里。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记录关于加密字符串的信息。
标准输出的信息将显示 vault block、属性名称、共享密钥和在配置里使用字符串的建议。请在安全的地方记录这些信息。下面是输出示例。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在你的配置里使用加密的字符串。
在你的配置里使用前面步骤里的字符串来替代普通文本字符串。下面是使用加密密码的数据源。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 你可以在允许表达式的任何域或独立配置文件里使用加密字符串。注意
要检查某个子系统里是否允许表达式,请在这个子系统里运行下列 CLI 命令:/host=master/core-service=management/security-realm=TestRealm:read-resource-description(recursive=true)
/host=master/core-service=management/security-realm=TestRealm:read-resource-description(recursive=true)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这个命令的输出里,查找expressions-allowed
参数的值。如果它为 true,你可以在这个特定子系统的配置里使用表达式。在密钥库里保存了字符串后,请使用下列语法用加密字符串替代任何明文字符串。${VAULT::VAULT_BLOCK::ATTRIBUTE_NAME::ENCRYPTED_VALUE}
${VAULT::VAULT_BLOCK::ATTRIBUTE_NAME::ENCRYPTED_VALUE}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 下面是一个例子,其 Vault Block 是ds_ExampleDS
,而属性是password
。<password>${VAULT::ds_ExampleDS::password::1}</password>
<password>${VAULT::ds_ExampleDS::password::1}</password>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow