问题描述
我正在尝试在Bean中运行保管箱容器,并将其用于创建VaultTemplate Bean以便在测试中进一步使用
@TestConfiguration
@TestPropertySource("classpath:application.yml")
public class TestsConfiguration {
@Container
public static VaultContainer vaultContainer = new VaultContainer();
@Bean
@Order(1)
public VaultEndpoint vaultEndpoint() {
vaultContainer
.withVaultToken("00000000-0000-0000-0000-000000000000")
.withExposedPorts(8200);
vaultContainer.start();
return VaultEndpoint.create(vaultContainer.getContainerIpAddress(),vaultContainer.getMappedPort(8200));
}
@Bean
@Order(2)
public VaultTemplate vaultTemplate(VaultEndpoint vaultEndpoint) {
return new VaultTemplate(vaultEndpoint,new TokenAuthentication("00000000-0000-0000-0000-000000000000"));
}
}
但是,当我尝试通过VaultOperations写一些kv时,我得到了:
GET请求的“ https:// localhost:32998 / v1 / my / secret”上的I / O错误:无法识别的SSL消息,纯文本连接?嵌套异常是javax.net.ssl.SSLException:无法识别的SSL消息,纯文本连接?
我该如何解决这个问题?
解决方法
@TestConfiguration
@TestPropertySource("classpath:application.yml")
public class TestsConfiguration {
@Container
public static VaultContainer vaultContainer = new VaultContainer();
@Bean
public VaultEndpoint vaultEndpoint() {
vaultContainer
.withVaultToken("00000000-0000-0000-0000-000000000000")
.withExposedPorts(8200);
vaultContainer.start();
return VaultEndpoint.create(vaultContainer.getContainerIpAddress(),vaultContainer.getMappedPort(8200));
}
@Bean
public VaultTemplate vaultTemplate(VaultEndpoint vaultEndpoint) {
vaultEndpoint.setScheme("http"); ////////////// this
return new VaultTemplate(vaultEndpoint,new TokenAuthentication("00000000-0000-0000-0000-000000000000"));
}
}