Eureka Discovery服务器(包括/config/*服务器上的云配置服务)正在向Eureka服务器注册,并且Eureka仪表板显示了该实例。此服务在端口9001上运行,启用SSL并进行用户身份验证。服务照常工作。
然后我创建了一个新的SpringBoot服务,它连接到Eureka并注册到它。由于使用了自签名证书,我在这篇文章中编写了一个小的SSLConfguration类:如何覆盖Spring Cloud Eureka default discovery client默认ssl上下文?将我的个人信任库提供给底层的eurekaclient。我们的所有服务都使用application.yml配置:
spring:
application:
name: mark2
server:
port: 9998
ssl:
enabled: true
key-store: classpath:keystore.p12
key-store-password: changeit
key-store-type: PKCS12
keyAlias: mark2
http:
client:
ssl:
trust-store: classpath:keystore.p12
trust-store-password: changeit
eureka:
client:
serviceUrl:
defaultZone: https://user:pass@localhost:9001/eureka
客户端完全连接和注册。
spring:
application:
name: mark2
cloud:
config:
username: user
password: password
discovery:
enabled: true
serviceId: EUREKA-DISCOVERY-SERVICE
failFast: true
name: my
profile: settings
# label: v1
http:
client:
ssl:
trust-store: classpath:keystore.p12
trust-store-password: changeit
eureka:
client:
serviceUrl:
defaultZone: https://user:password@localhost:9001/eureka
instance:
metadataMap:
user: user
password: password
configPath: /config
好的,然后我用javax.net.ssl.truststore等将JVM参数设置为我的个人信任库。
bootRun {
jvmArgs = [
"-Djavax.net.ssl.trustStore=/absolute/path/to/keystore.p12",
"-Djavax.net.ssl.trustStorePassword=changeit",
"-Djavax.net.ssl.trustStoreType=PKCS12",
]
}
服务启动,Eureka客户端开始与Eureka服务器通信,查找云配置实例并加载属性文件,然后创建Spring上下文。该属性仅包含一些测试属性。
但是然后-错误:
Field optionalArgs in org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration$RefreshableEurekaClientConfiguration required a single bean, but 2 were found:
- getTrustStoredEurekaClient: defined by method 'getTrustStoredEurekaClient' in class path resource [de/mark2/SslConfiguration.class]
- discoveryClientOptionalArgs: defined by method 'discoveryClientOptionalArgs' in org.springframework.cloud.netflix.eureka.config.DiscoveryClientOptionalArgsConfiguration
定义meta-inf/spring.factories,并添加org.springframework.cloud.bootstrap.bootstrapconfiguration=...行
类可以类似于:
@Configuration
@BootstrapConfiguration
public class SslConfiguration {
@Value("${http.client.ssl.trust-store}")
private URL trustStore;
@Value("${http.client.ssl.trust-store-password}")
private String trustStorePassword;
@Bean
public DiscoveryClient.DiscoveryClientOptionalArgs getTrustStoredEurekaClient(SSLContext sslContext) {
DiscoveryClient.DiscoveryClientOptionalArgs args = new DiscoveryClient.DiscoveryClientOptionalArgs();
args.setSSLContext(sslContext);
return args;
}
@Bean
public SSLContext sslContext() throws Exception {
return new SSLContextBuilder().loadTrustMaterial(trustStore, trustStorePassword.toCharArray()).build();
}
}
因为DiscoveryClientOptionalArgs现在定义了两次,所以添加另一个类,在Spring上下文启动后加载
@Configuration
public class DiscoveryServiceConfiguration {
@Bean
public static BeanFactoryPostProcessor registerPostProcessor() {
return (ConfigurableListableBeanFactory beanFactory) -> {
BeanDefinitionRegistry registry = (BeanDefinitionRegistry) beanFactory;
for (String beanDefinitionName : registry.getBeanDefinitionNames()) {
if (beanDefinitionName.equalsIgnoreCase("discoveryClientOptionalArgs")) {
BeanDefinition beanDefinition = registry.containsBeanDefinition(beanDefinitionName) ? registry.getBeanDefinition(beanDefinitionName) : null;
if (beanDefinition != null) {
if (registry.containsBeanDefinition(beanDefinitionName)) {
registry.removeBeanDefinition(beanDefinitionName);
}
}
}
}
};
}
}
在SpringBoot中读取环境变量的最佳方法是什么? 在Java中,我使用了以下方法: 是否可以使用注释来实现?
还有人看到这个吗?使用Python2.7。13在窗户上。我是SSL截获的幕后黑手,通过安装Certfi并将我们自己的证书添加到cacert,我花了很长时间才克服python和pip上的SSL错误。佩姆。 但这在virtualenv中不起作用,无论我尝试了什么(相同的步骤),我仍然会得到错误- " 想知道是否有人看到了这一点,并得到它的工作-谢谢!
本文向大家介绍SpringBoot + SpringSecurity 环境搭建的步骤,包括了SpringBoot + SpringSecurity 环境搭建的步骤的使用技巧和注意事项,需要的朋友参考一下 一、使用SpringBoot+Maven搭建一个多模块项目(可以参考这篇文章 --> 这里) 二、删除父工程的src文件,删除app、browser、core下的.java文件 依赖关系: dem
本文向大家介绍springboot 多环境配置教程,包括了springboot 多环境配置教程的使用技巧和注意事项,需要的朋友参考一下 在上一课中我们通过idea工具没有做任何配置就构建了一个springboot项目,并且已经成功启动了,但我们都很清楚这些都远远不能达到我们实际项目的需求,比如我们要引入我们自己的redis配置、mysql配置等,应该如何处理呢?在spring mvc中我们都是通过
我正在尝试运行一个使用Docker-Compose运行的SpringBoot项目。我使用启动了它的依赖项(Redis、MongoDB和RabbitMQ 我正在构建项目并使用以下命令运行它 我总是犯这些错误: 上处理条件时出错 中的占位符“OAUTH_CLIENTID” 在docker-compose文件中,环境变量的值在environment部分中定义。 这就是application.yml的样子
我正在使用一个具有不同测试环境(test、QA、UAT、PROD)Spring boot应用程序的关键云代工,我创建了多个属性文件(每个指向不同的数据库),如 或者,当我转移到更高的环境时,我需要改变吗? 提前道谢。