Quarkus 密钥库密码文件

问题描述 投票:0回答:1

我的密钥库密码保存在服务器上,我从保险库中提取该密码。我想提供 quarkus.http.ssl.certificate.key-store-password 的路径而不是硬编码的密码。在开始之前我们是否有任何拦截器,以便可以使用某些 @override 实现从该文件加载密码?

或者其他一些方法。我不想将密码文件放在项目中。我想在 application.yaml 中提供路径。

夸库斯2.7

quarkus vert.x microprofile quarkus-native eclipse-microprofile-config
1个回答
0
投票

您可以使用自定义配置源:

import io.quarkus.runtime.annotations.ConfigItem;
import io.quarkus.runtime.annotations.ConfigRoot;
import org.eclipse.microprofile.config.spi.ConfigSource;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;

@ConfigRoot(name = "keystore-password")
public class KeystorePasswordConfig {

    @ConfigItem(name = "password-file")
    public String passwordFile;
}

public class CustomConfigSource implements ConfigSource {

    private final Map<String, String> properties = new HashMap<>();

    public CustomConfigSource(KeystorePasswordConfig keystorePasswordConfig) {
        loadPasswordFromFile(keystorePasswordConfig.getPasswordFile());
    }

    private void loadPasswordFromFile(String passwordFile) {
        try {
            String password = Files.readString(Paths.get(passwordFile));
            properties.put("quarkus.http.ssl.certificate.key-store-password", password);
        } catch (IOException e) {
            // Handle file read exception
        }
    }

    @Override
    public Map<String, String> getProperties() {
        return properties;
    }

    @Override
    public String getValue(String propertyName) {
        return properties.get(propertyName);
    }

    @Override
    public String getName() {
        return "CustomConfigSource";
    }
}

之后,配置 Quarkus 以在您的应用程序中使用此自定义 ConfigSource:

    keystore-password:
  password-file: /path/to/password/file

quarkus:
  config:
    sources:
      custom-config-source:
        class: your.package.CustomConfigSource
© www.soinside.com 2019 - 2024. All rights reserved.