2.2. 在 Elytron 中创建加密的表达式
从敏感字符串和 SecretKeyCredential 创建一个加密表达式。在管理模型(服务器配置文件)中使用此加密表达式而不是的敏感字符串,来维护敏感字符串的机密性。
先决条件
您已在其中创建了一个 PropertiesCredentialStore 和一个 secret 密钥。
如需更多信息,请参阅为 独立服务器创建 PropertiesCredentialStore/
secret-key-credential-store。
流程
使用以下管理 CLI 命令,创建一个在凭证存储中引用现有 SecretKeyCredential 的别名的解析器:
语法
/subsystem=elytron/expression=encryption:add(resolvers=[{name=<name_of_the_resolver>, credential-store=<name_of_credential_store>, secret-key=<secret_key_alias>}])/subsystem=elytron/expression=encryption:add(resolvers=[{name=<name_of_the_resolver>, credential-store=<name_of_credential_store>, secret-key=<secret_key_alias>}])Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
/subsystem=elytron/expression=encryption:add(resolvers=[{name=exampleResolver, credential-store=examplePropertiesCredentialStore, secret-key=key}])/subsystem=elytron/expression=encryption:add(resolvers=[{name=exampleResolver, credential-store=examplePropertiesCredentialStore, secret-key=key}])Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果显示与重复资源相关的错误消息,请使用
list-add操作而不是add,如下所示:语法
/subsystem=elytron/expression=encryption:list-add(name=resolvers, value={name=<name_of_the_resolver>, credential-store=<name_of_credential_store>, secret-key=<secret_key_alias>})/subsystem=elytron/expression=encryption:list-add(name=resolvers, value={name=<name_of_the_resolver>, credential-store=<name_of_credential_store>, secret-key=<secret_key_alias>})Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新加载服务器。
reload
reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在管理 CLI 中禁用命令缓存:
重要如果不禁用缓存,则可以访问管理 CLI 历史记录文件的任何人都可以看到 secret 密钥。
history --disable
history --disableCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下管理 CLI 命令创建一个加密表达式:
语法
/subsystem=elytron/expression=encryption:create-expression(resolver=<existing_resolver>, clear-text=<sensitive_string_to_protect>)
/subsystem=elytron/expression=encryption:create-expression(resolver=<existing_resolver>, clear-text=<sensitive_string_to_protect>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
/subsystem=elytron/expression=encryption:create-expression(resolver=exampleResolver, clear-text=TestPassword) { "outcome" => "success", "result" => {"expression" => "${ENC::exampleResolver:RUxZAUMQgtpG7oFlHR2j1Gkn3GKIHff+HR8GcMX1QXHvx2uGurI=}"} }/subsystem=elytron/expression=encryption:create-expression(resolver=exampleResolver, clear-text=TestPassword) { "outcome" => "success", "result" => {"expression" => "${ENC::exampleResolver:RUxZAUMQgtpG7oFlHR2j1Gkn3GKIHff+HR8GcMX1QXHvx2uGurI=}"} }Copy to Clipboard Copied! Toggle word wrap Toggle overflow ${ENC::exampleResolver:RUxZAUMQgtpG7oFlHR2j1Gkn3GKIHff+HR8GcMX1QXHvx2uGurI=}是您在管理模型中使用的加密表达式,而不是TestPassword。如果您在不同的地方使用相同的纯文本,则在每次使用加密表达式而不是该处的纯文本之前,请重复此命令。当您为同一纯文本重复使用同一命令时,您可以获得同一密钥的不同结果,因为 Elytron 为每个调用使用唯一的初始化向量。
通过使用不同的加密表达式,您可以确保,如果某一字符串的某个加密表达式受到某种程度的破坏,用户无法发现任何其他加密表达式也可能会包含相同的字符串。
使用以下管理 CLI 命令重新启用命令缓存:
history --enable
history --enableCopy to Clipboard Copied! Toggle word wrap Toggle overflow