为spring-cloud-config服务器配置ssl密钥

时间:2016-10-17 05:49:25

标签: spring-boot spring-cloud-netflix spring-cloud-config

我想为spring-cloud-config服务器设置server.ssl.key-store-password,配置将来自GIT(application.yml)。

以下是我要在application.yml中配置的内容

server:
  port: 8760
  ssl:
    key-store: path to .jks
    key-store-password: '{cipher}encrypted password'
    key-store-type: jks
    key-password: '{cipher}encrypted password'

引导配置服务器时,它使用TextEncryptor FailsafeTextEncryptor配置EncryptionBootstrapConfiguration,当为​​EnvironmentDecryptApplicationInitializer调用decrypt函数时,它会失败。

我们如何为EncryptionBootstrapConfiguration提供自定义TextEncryptor,以便在启动config-server时可以使用{cipher}

提到https://stackoverflow.com/a/32047393/1946403

1 个答案:

答案 0 :(得分:0)

我收到了这个错误。为了解决这个问题,我必须将EncryptionConfiguration和TextEncryptor添加到spring.factory文件中。

我有3个文件:

加密配置:

@Configuration
public class AESEncryptionConfiguration {

    @Bean
    EnvironmentDecryptApplicationInitializer environmentDecryptApplicationInitializer() {
        return new EnvironmentDecryptApplicationInitializer(new AESTextEncryptor());
    }
}

TextEncryptor:

@Component
public class AESTextEncryptor implements TextEncryptor {

    @Override
    public String encrypt(String text) {
        .
        .
        .       
    }

    @Override
    public String decrypt(String encryptedText) {
        .
        .
        .
    }
}

然后我必须在/src/main/resources/META-INF/spring.factories

中添加对这两个文件的引用
org.springframework.cloud.bootstrap.BootstrapConfiguration=com.rs.config.AESEncryptionConfiguration,com.common.encryption.AESTextEncryptor

通过这样做,我能够创建自定义密码。