8.3. 在 Karaf 上设置 Fuse Credential Store
使用
credential-store:create
命令创建凭证存储:karaf@root()> credential-store:create -a location=credential.store -k password="my password" -k algorithm=masked-MD5-DES In order to use this credential store set the following environment variables Variable | Value ------------------------------------------------------------------------------------------------------------------------ CREDENTIAL_STORE_PROTECTION_ALGORITHM | masked-MD5-DES CREDENTIAL_STORE_PROTECTION_PARAMS | MDkEKXNvbWVhcmJpdHJhcnljcmF6eXN0cmluZ3RoYXRkb2Vzbm90bWF0dGVyAgID6AQIsUOEqvog6XI= CREDENTIAL_STORE_PROTECTION | Sf6sYy7gNpygs311zcQh8Q== CREDENTIAL_STORE_ATTR_location | credential.store Or simply use this: export CREDENTIAL_STORE_PROTECTION_ALGORITHM=masked-MD5-DES export CREDENTIAL_STORE_PROTECTION_PARAMS=MDkEKXNvbWVhcmJpdHJhcnljcmF6eXN0cmluZ3RoYXRkb2Vzbm90bWF0dGVyAgID6AQIsUOEqvog6XI= export CREDENTIAL_STORE_PROTECTION=Sf6sYy7gNpygs311zcQh8Q== export CREDENTIAL_STORE_ATTR_location=credential.store
这应该是
用于存储
secret 的 JCEKS KeyStore 文件。退出 Karaf 容器:
karaf@root()> logout
设置创建凭证存储时显示的环境变量:
$ export CREDENTIAL_STORE_PROTECTION_ALGORITHM=masked-MD5-DES $ export CREDENTIAL_STORE_PROTECTION_PARAMS=MDkEKXNvbWVhcmJpdHJhcnljcmF6eXN0cmluZ3RoYXRkb2Vzbm90bWF0dGVyAgID6AQIsUOEqvog6XI= $ export CREDENTIAL_STORE_PROTECTION=Sf6sYy7gNpygs311zcQh8Q== $ export CREDENTIAL_STORE_ATTR_location=credential.store
重要在启动 Karaf 容器前,您需要先设置
CREDENTIAL_STORE_*
环境变量。启动 Karaf 容器:
bin/karaf
使用
credential-store:store
将 secret 添加到凭证存储中:karaf@root()> credential-store:store -a javax.net.ssl.keyStorePassword -s "alias is set" Value stored in the credential store to reference it use: CS:javax.net.ssl.keyStorePassword
再次退出 Karaf 容器:
karaf@root()> logout
再次运行 Karaf 容器,指定对 secret 的引用,而不是值:
$ EXTRA_JAVA_OPTS="-Djavax.net.ssl.keyStorePassword=CS:javax.net.ssl.keyStorePassword" bin/karaf
当使用 System::getProperty
访问时,javax.net.ssl.keyStorePassword
的值应包含字符串 "alias is set"
。
注意
EXTRA_JAVA_OPTS
是很多方法指定系统属性。这些系统属性在 Karaf 容器开始时定义。
重要
当环境变量在您的环境中泄漏或预期与凭据存储文件的内容一起使用时,您的机密会被破坏。当通过 JMX 访问时,属性的值替换为字符串 "& lt;sensitive>"
,但有很多代码路径会导致 System::getProperty
,用于实例诊断或监控工具可能会访问它以调试目的。