8.3. 在 Karaf 中设置 Fuse 凭据存储

  1. 使用 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

    这应该是文件 credential.store,它是用于存储 secret 的 JCEKS KeyStore。

  2. 退出 Karaf 容器:

    karaf@root()> logout
  3. 设置创建凭证存储时显示的环境变量:

    $ 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 容器前设置 iwl_STORE HBAC 环境变量。

  4. 启动 Karaf 容器:

    bin/karaf
  5. 使用 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
  6. 再次退出 Karaf 容器:

    karaf@root()> logout
  7. 再次运行 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 容器的开头定义。

重要

当环境变量在环境之外泄漏或预期使用以及凭证存储文件的内容时,您的 secret 会受到影响。通过 JMX 访问的属性值将被替换为字符串 "< sensitive>",但有许多代码路径会导致 System::getProperty,用于实例诊断或监控工具可能会与任何第三方软件一起用于调试目的。