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=exampleResolver, credential-store=examplePropertiesCredentialStore, secret-key=key}])如果显示与重复资源相关的错误消息,请使用
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=exampleResolver, credential-store=examplePropertiesCredentialStore, secret-key=key}) { "outcome" => "success", "response-headers" => { "operation-requires-reload" => true, "process-state" => "reload-required" } }重新加载服务器。
reload在管理 CLI 中禁用命令缓存:
重要如果不禁用缓存,则可以访问管理 CLI 历史记录文件的任何人都可以看到 secret 密钥。
history --disable使用以下管理 CLI 命令创建一个加密表达式:
语法
/subsystem=elytron/expression=encryption:create-expression(resolver=<existing_resolver>, clear-text=<sensitive_string_to_protect>)示例
/subsystem=elytron/expression=encryption:create-expression(resolver=exampleResolver, clear-text=TestPassword) { "outcome" => "success", "result" => {"expression" => "${ENC::exampleResolver:RUxZAUMQgtpG7oFlHR2j1Gkn3GKIHff+HR8GcMX1QXHvx2uGurI=}"} }${ENC::exampleResolver:RUxZAUMQgtpG7oFlHR2j1Gkn3GKIHff+HR8GcMX1QXHvx2uGurI=}是您在管理模型中使用的加密表达式,而不是TestPassword。如果您在不同的地方使用相同的纯文本,则在每次使用加密表达式而不是该处的纯文本之前,请重复此命令。当您为同一纯文本重复使用同一命令时,您可以获得同一密钥的不同结果,因为 Elytron 为每个调用使用唯一的初始化向量。
通过使用不同的加密表达式,您可以确保,如果某一字符串的某个加密表达式受到某种程度的破坏,用户无法发现任何其他加密表达式也可能会包含相同的字符串。
使用以下管理 CLI 命令重新启用命令缓存:
history --enable