1.4. 使用 JBoss EAP 管理 CLI 的凭据存储操作
要在运行的 JBoss EAP 服务器中管理 JBoss EAP 凭据,请使用提供的管理 CLI 操作。您可以使用 JBoss EAP 管理 CLI 管理 PasswordCredential 和 SecretKeyCredential。
您只能对可修改的凭证存储进行这些操作。所有凭据存储类型默认为可修改。
1.4.1. 为独立服务器创建一个 credential-store 复制链接链接已复制到粘贴板!
为在文件系统上的任意目录中作为独立服务器运行的 JBoss EAP 创建一个 credential-store。为安全起见,只有有限用户才可以访问包含存储的目录。
先决条件
- 您对在其下运行 JBoss EAP 的用户帐户至少提供了对包含 KeyStoreCredentialStore 目录的读/写权限。
credential-store 和 secret-key-credential-store 不能同名,因为它们实现相同的 Elytron 功能:org.wildfly.security.credential-store。
流程
使用以下管理 CLI 命令,创建一个 KeyStoreCredentialStore:
语法
/subsystem=elytron/credential-store=<name_of_credential_store>:add(path="<path_to_store_file>", relative-to=<base_path_to_store_file>, credential-reference={clear-text=<store_password>}, create=true)/subsystem=elytron/credential-store=<name_of_credential_store>:add(path="<path_to_store_file>", relative-to=<base_path_to_store_file>, credential-reference={clear-text=<store_password>}, create=true)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
/subsystem=elytron/credential-store=exampleKeyStoreCredentialStore:add(path="exampleKeyStoreCredentialStore.jceks", relative-to=jboss.server.data.dir, credential-reference={clear-text=password}, create=true) {"outcome" => "success"}/subsystem=elytron/credential-store=exampleKeyStoreCredentialStore:add(path="exampleKeyStoreCredentialStore.jceks", relative-to=jboss.server.data.dir, credential-reference={clear-text=password}, create=true) {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.2. 为受管域创建一个 credential-store 复制链接链接已复制到粘贴板!
您可以在受管域中创建一个 credential-store,但必须首先使用 WildFly Elytron 工具来准备您的 KeyStoreCredentialStore。如果在单个受管域中有多个主机控制器,请选择以下选项之一:
-
在每个主机控制器中创建一个
credential-store,并向每一个credential-store添加凭证。 -
将填充的
credential-store从一个主机控制器拷贝到所有其他主机控制器。 -
将
credential-store文件保存在网络文件系统(NFS)中,然后对您创建的所有credential-store资源使用该文件。
或者,您可以在主机控制器上创建一个带有凭证的 credential-store 文件,而无需使用 WildFly Elytron 工具。
您不必在每台服务器上定义一个 credential-store 资源,因为同一配置文件上的每个服务器都包含您的 credential-store 文件。您可以在服务器的 data 目录 relative-to=jboss.server.data.dir 中找到 credential-store 文件 。
credential-store 和 secret-key-credential-store 不能同名,因为它们实现相同的 Elytron 功能:org.wildfly.security.credential-store。
以下流程描述了如何使用 NFS 来向所有主机控制器提供 credential-store 文件。
流程
-
使用 WildFly Elytron 工具来创建一个
credential-store存储文件。有关此内容的更多信息,请参阅 WildFly Elytron 工具credential-store操作。 分发存储文件。例如,使用
scp命令将它分配给每个主机控制器,或者将其存储在 NFS 中,将其用于所有credential-store资源。注意为保持一致性,对于多个资源和主机控制器使用的且存储在 NFS 中的
credential-store文件,您必须在只读模式下使用credential-store。另外,请确保您为credential-store文件提供了一个绝对路径。语法
/profile=<profile_name>/subsystem=elytron/credential-store=<name_of_credential_store>:add(path=<absolute_path_to_store_keystore>,credential-reference={clear-text="<store_password>"},create=false,modifiable=false)/profile=<profile_name>/subsystem=elytron/credential-store=<name_of_credential_store>:add(path=<absolute_path_to_store_keystore>,credential-reference={clear-text="<store_password>"},create=false,modifiable=false)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
/profile=full-ha/subsystem=elytron/credential-store=exampleCredentialStoreDomain:add(path=/usr/local/etc/example-cred-store.cs,credential-reference={clear-text="password"},create=false,modifiable=false)/profile=full-ha/subsystem=elytron/credential-store=exampleCredentialStoreDomain:add(path=/usr/local/etc/example-cred-store.cs,credential-reference={clear-text="password"},create=false,modifiable=false)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选: 如果您需要在配置集中定义
credential-store资源,请使用存储文件来创建资源。语法
/profile=<profile_name>/subsystem=elytron/credential-store=<name_of_credential_store>:add(path=<path_to_store_file>,credential-reference={clear-text="<store_password>"})/profile=<profile_name>/subsystem=elytron/credential-store=<name_of_credential_store>:add(path=<path_to_store_file>,credential-reference={clear-text="<store_password>"})Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/profile=full-ha/subsystem=elytron/credential-store=exampleCredentialStoreHA:add(path=/usr/local/etc/example-cred-store-ha.cs, credential-reference={clear-text="password"})/profile=full-ha/subsystem=elytron/credential-store=exampleCredentialStoreHA:add(path=/usr/local/etc/example-cred-store-ha.cs, credential-reference={clear-text="password"})Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选: 为主机控制器创建
credential-store资源。语法
/host=<host_controller_name>/subsystem=elytron/credential-store=<name_of_credential_store>:add(path=<path_to_store_file>,credential-reference={clear-text="<store_password>"})/host=<host_controller_name>/subsystem=elytron/credential-store=<name_of_credential_store>:add(path=<path_to_store_file>,credential-reference={clear-text="<store_password>"})Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/host=master/subsystem=elytron/credential-store=exampleCredentialStoreHost:add(path=/usr/local/etc/example-cred-store-host.cs, credential-reference={clear-text="password"})/host=master/subsystem=elytron/credential-store=exampleCredentialStoreHost:add(path=/usr/local/etc/example-cred-store-host.cs, credential-reference={clear-text="password"})Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.3. 为独立服务器创建一个 secret-key-credential-store 复制链接链接已复制到粘贴板!
使用管理 CLI 创建一个 secret-key-credential-store。当您创建 secret-key-credential-store 时,JBoss EAP 默认会生成一个 secret 密钥。生成的密钥的名称是 key,其大小为 256 位。
先决条件
- JBoss EAP 正在运行。
-
您为在其下运行 JBoss EAP 的用户帐户至少提供了对包含
secret-key-credential-store的目录的读/写权限。
流程
使用以下命令,使用管理 CLI 来创建一个
secret-key-credential-store:语法
/subsystem=elytron/secret-key-credential-store=<name_of_credential_store>:add(path="<path_to_the_credential_store>", relative-to=<path_to_store_file>)
/subsystem=elytron/secret-key-credential-store=<name_of_credential_store>:add(path="<path_to_the_credential_store>", relative-to=<path_to_store_file>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/secret-key-credential-store=examplePropertiesCredentialStore:add(path=examplePropertiesCredentialStore.cs, relative-to=jboss.server.config.dir) {"outcome" => "success"}/subsystem=elytron/secret-key-credential-store=examplePropertiesCredentialStore:add(path=examplePropertiesCredentialStore.cs, relative-to=jboss.server.config.dir) {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.4. 向 credential-store 添加一个 PasswordCredential 复制链接链接已复制到粘贴板!
为那些需要将密码作为 PasswordCredential 的资源,向 credential-store 中添加一个明文密码,以便在配置文件中隐藏该密码。然后,您可以引用该存储的凭证来访问这些资源,而不用暴露您的密码。
先决条件
您已创建了一个
credential-store。有关创建
credential-store的详情,请参考 为独立服务器创建一个credential-store。
流程
将新的 PasswordCredential 添加到
credential-store中:语法
/subsystem=elytron/credential-store=<name_of_credential_store>:add-alias(alias=<alias>, secret-value=<secret-value>)
/subsystem=elytron/credential-store=<name_of_credential_store>:add-alias(alias=<alias>, secret-value=<secret-value>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
/subsystem=elytron/credential-store=exampleKeyStoreCredentialStore:add-alias(alias=passwordCredentialAlias, secret-value=StrongPassword) {"outcome" => "success"}/subsystem=elytron/credential-store=exampleKeyStoreCredentialStore:add-alias(alias=passwordCredentialAlias, secret-value=StrongPassword) {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
发出以下命令来验证 PasswordCredential 是否已添加到
credential-store中:语法
/subsystem=elytron/credential-store=<name_of_credential_store>:read-aliases()
/subsystem=elytron/credential-store=<name_of_credential_store>:read-aliases()Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
/subsystem=elytron/credential-store=exampleKeyStoreCredentialStore:read-aliases() { "outcome" => "success", "result" => ["passwordcredentialalias"] }/subsystem=elytron/credential-store=exampleKeyStoreCredentialStore:read-aliases() { "outcome" => "success", "result" => ["passwordcredentialalias"] }Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.5. 在 credential-store 中生成一个 SecretKeyCredential 复制链接链接已复制到粘贴板!
在 credential-store 中生成一个 SecretKeyCredential。默认情况下,Elytron 创建 256 位密钥。如果需要不同的大小,您可以在 key-size 属性中指定 128 位或 192 位密钥。
先决条件
您已创建了一个
credential-store。有关创建
credential-store的详情,请参考 为独立服务器创建一个credential-store。
流程
使用以下管理 CLI 命令,在
credential-store中生成一个 SecretKeyCredential:语法
/subsystem=elytron/credential-store=<name_of_credential_store>:generate-secret-key(alias=<alias>, key-size=<128_or_192>)
/subsystem=elytron/credential-store=<name_of_credential_store>:generate-secret-key(alias=<alias>, key-size=<128_or_192>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
/subsystem=elytron/credential-store=exampleKeyStoreCredentialStore:generate-secret-key(alias=secretKeyCredentialAlias)
/subsystem=elytron/credential-store=exampleKeyStoreCredentialStore:generate-secret-key(alias=secretKeyCredentialAlias)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
发出以下命令以验证您的 SecretKeyCredential 是否存储在
credential-store中:语法
/subsystem=elytron/credential-store=<name_of_credential_store>:read-aliases()
/subsystem=elytron/credential-store=<name_of_credential_store>:read-aliases()Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在 secret-key-credential-store 中生成一个 SecretKeyCredential。默认情况下,Elytron 创建 256 位密钥。如果需要不同的大小,您可以在 key-size 属性中指定 128 位或 192 位密钥。
当您生成 SecretKeyCredential 时,Elytron 生成一个新的随机 secret 密钥,并将其保存为 SecretKeyCredential。您可以对 secret-key-credential-store 使用 export 操作来查看凭证的内容。
确保您创建了一个 secret-key-credential-store ,SecretKeyCredential 的备份或两者的备份,因为 JBoss EAP 无法解密或检索丢失的 Elytron 凭证。
您可以对 secret-key-credential-store 使用 export 操作来获取 SecretKeyCredential 的值。然后您可以将这个值保存为备份。
先决条件
您已创建了一个
secret-key-credential-store。有关创建
secret-key-credential-store的详情,请参考 为独立服务器创建一个secret-key-credential-store。
流程
使用以下管理 CLI 命令在
secret-key-credential-store中生成一个 SecretKeyCredential:语法
/subsystem=elytron/secret-key-credential-store=<name_of_the_properties_credential_store>:generate-secret-key(alias=<alias>, key-size=<128_or_192>)
/subsystem=elytron/secret-key-credential-store=<name_of_the_properties_credential_store>:generate-secret-key(alias=<alias>, key-size=<128_or_192>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
/subsystem=elytron/secret-key-credential-store=examplePropertiesCredentialStore:generate-secret-key(alias=secretKeyCredentialAlias) {"outcome" => "success"}/subsystem=elytron/secret-key-credential-store=examplePropertiesCredentialStore:generate-secret-key(alias=secretKeyCredentialAlias) {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
发出以下命令以验证 Elytron 创建了 SecretKeyCredential:
语法
/subsystem=elytron/secret-key-credential-store=<name_of_the_properties_credential_store>:read-aliases()
/subsystem=elytron/secret-key-credential-store=<name_of_the_properties_credential_store>:read-aliases()Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您可以将在 secret-key-credential-store 外创建的 SecretKeyCredential 导入到 Elytron secret-key-credential-store 中。假设您从另一个凭证存储中导出了一个 SecretKeyCredential,例如,您可以将 credential-store 导入到 secret-key-credential-store 中。
先决条件
您已创建了一个
secret-key-credential-store。有关创建
secret-key-credential-store的详情,请参考 为独立服务器创建一个secret-key-credential-store。您已导出了一个 SecretKeyCredential。
有关导出 SecretKeyCredential 的详情,请参考从
secret-key-credential-store中导出 SecretKeyCredential。
流程
使用以下命令在管理 CLI 中禁用命令缓存:
重要如果不禁用缓存,则可以访问管理 CLI 历史记录文件的任何人都可以看到 secret 密钥。
history --disable
history --disableCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下管理 CLI 命令导入 secret 密钥:
语法
/subsystem=elytron/secret-key-credential-store=<name_of_credential_store>:import-secret-key(alias=<alias>, key="<secret_key>")
/subsystem=elytron/secret-key-credential-store=<name_of_credential_store>:import-secret-key(alias=<alias>, key="<secret_key>")Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
/subsystem=elytron/secret-key-credential-store=examplePropertiesCredentialStore:import-secret-key(alias=imported, key="RUxZAUs+Y1CzEPw0g2AHHOZ+oTKhT9osSabWQtoxR+O+42o11g==")
/subsystem=elytron/secret-key-credential-store=examplePropertiesCredentialStore:import-secret-key(alias=imported, key="RUxZAUs+Y1CzEPw0g2AHHOZ+oTKhT9osSabWQtoxR+O+42o11g==")Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下管理 CLI 命令重新启用命令缓存:
history --enable
history --enableCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.8. 列出credential-store 中的凭证 复制链接链接已复制到粘贴板!
要查看 credential-store 中存储的所有凭证,您可以使用管理 CLI 列出它们。
流程
使用以下管理 CLI 命令列出存储在
credential-store中的凭证:语法
/subsystem=elytron/credential-store=<name_of_credential_store>:read-aliases()
/subsystem=elytron/credential-store=<name_of_credential_store>:read-aliases()Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.9. 从 credential-store 中导出 SecretKeyCredential 复制链接链接已复制到粘贴板!
您可以从 credential-store 中导出现一个现有的 SecretKeyCredential,以使用 SecretKeyCredential 或创建一个 SecretKeyCredential 的备份。
先决条件
您已在
credentials-store中生成了一个 SecretKeyCredential。有关在
credential-store中生成 SecretKeyCredential 的信息,请参阅在credential-store中生成 SecretKeyCredential。
流程
使用以下管理 CLI 命令,从
credential-store中导出 SecretKeyCredential:语法
/subsystem=elytron/credential-store=<name_of_credential_store>:export-secret-key(alias=<alias>)
/subsystem=elytron/credential-store=<name_of_credential_store>:export-secret-key(alias=<alias>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
/subsystem=elytron/credential-store=exampleKeyStoreCredentialStore:export-secret-key(alias=secretKeyCredentialAlias) { "outcome" => "success", "result" => {"key" => "RUxZAUui+8JkoDCE6mFyA3cCIbSAZaXq5wgYejj1scYgdDqWiw=="} }/subsystem=elytron/credential-store=exampleKeyStoreCredentialStore:export-secret-key(alias=secretKeyCredentialAlias) { "outcome" => "success", "result" => {"key" => "RUxZAUui+8JkoDCE6mFyA3cCIbSAZaXq5wgYejj1scYgdDqWiw=="} }Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您可以从 secret-key-credential-store 中导出一个现有的 SecretKeyCredential 以使用 SecretKeyCredential,或创建一个 SecretKeyCredential 的备份。
先决条件
您已在
secret-key-credential-store中生成了一个 SecretKeyCredential,或者已将其导入到其中。有关在
secret-key-credential-store中生成一个 SecretKeyCredential 的信息,请在secret-key-credential-store中生成一个 Secret KeyCredential。有关将 SecretKeyCredential 导入到
secret-key-credential-store中的信息,请参阅将 SecretKeyCredential 导入到secret-key-credential-store中。
流程
使用以下管理 CLI 命令从
secret-key-credential-store中导出一个 SecretKeyCredential:语法
/subsystem=elytron/secret-key-credential-store=<name_of_credential_store>:export-secret-key(alias=<alias>)
/subsystem=elytron/secret-key-credential-store=<name_of_credential_store>:export-secret-key(alias=<alias>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
/subsystem=elytron/secret-key-credential-store=examplePropertiesCredentialStore:export-secret-key(alias=secretkeycredentialalias) { "outcome" => "success", "result" => {"key" => "RUxZAUtxXcYvz0aukZu+odOynIr0ByLhC72iwzlJsi+ZPmONgA=="} }/subsystem=elytron/secret-key-credential-store=examplePropertiesCredentialStore:export-secret-key(alias=secretkeycredentialalias) { "outcome" => "success", "result" => {"key" => "RUxZAUtxXcYvz0aukZu+odOynIr0ByLhC72iwzlJsi+ZPmONgA=="} }Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.11. 从 credential-store 中删除一个凭证 复制链接链接已复制到粘贴板!
您可以在 credential-store 中存储每个凭证类型,但默认情况下,当您删除凭证时,Elytron 会假定它是 PasswordCredential。如果要删除其他凭证类型,请在 entry-type 属性中指定它。
流程
使用以下管理 CLI 命令,从
credential-store中删除一个凭证:语法
/subsystem=elytron/credential-store=<name_of_credential_store>:remove-alias(alias=<alias>, entry-type=<credential_type>)
/subsystem=elytron/credential-store=<name_of_credential_store>:remove-alias(alias=<alias>, entry-type=<credential_type>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除 PasswordCredential 的示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除 SecretKeyCredential 的示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
发出以下命令来验证 Elytron 是否删除了凭证:
语法
/subsystem=elytron/credential-store=<name_of_credential_store>:read-aliases()
/subsystem=elytron/credential-store=<name_of_credential_store>:read-aliases()Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
/subsystem=elytron/credential-store=exampleKeyStoreCredentialStore:read-aliases() { "outcome" => "success", "result" => [] }/subsystem=elytron/credential-store=exampleKeyStoreCredentialStore:read-aliases() { "outcome" => "success", "result" => [] }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您删除的凭证不会被列出。
1.4.12. 从 secret-key-credential-store 中删除一个凭证 复制链接链接已复制到粘贴板!
您只能将 SecretKeyCredential 类型存储在 secret-key-credential-store 中。这意味着,当您从 secret-key-credential-store 中删除一个凭证时,您不必指定一个 entry-type。
流程
使用以下命令,从
secret-key-credential-store中删除一个 SecretKeyCredential:语法
/subsystem=elytron/secret-key-credential-store=<name_of_credential_store>:remove-alias(alias=<alias>)
/subsystem=elytron/secret-key-credential-store=<name_of_credential_store>:remove-alias(alias=<alias>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
发出以下命令来验证 Elytron 是否删除了凭证:
语法
/subsystem=elytron/secret-key-credential-store=<name_of_credential_store>:read-aliases()
/subsystem=elytron/secret-key-credential-store=<name_of_credential_store>:read-aliases()Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
/subsystem=elytron/secret-key-credential-store=examplePropertiesCredentialStore:read-aliases() { "outcome" => "success", "result" => [] }/subsystem=elytron/secret-key-credential-store=examplePropertiesCredentialStore:read-aliases() { "outcome" => "success", "result" => [] }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您删除的凭证不会被列出。