SpringBoot-使用Spring Cloud Config重新加载SSL证书

时间:2019-09-27 23:59:04

标签: spring spring-boot ssl lets-encrypt spring-cloud-config

我正在学习在Spring Boot中使用 SSL证书。专门使用“让我们加密”。

它们具有3个月后过期的限制,所以据我所知,它们应该更新,在更新证书时,我们需要重新启动Spring Boot应用程序以使其加载新证书。 / p>

前段时间,我和Eureka和Zuul Gateway一起开发微服务。而且我还记得我还设置了一个git repo用作Spring Cloud Config。我不太记得,我认为我们可以在不使用微服务架构的情况下使用Spring Cloud Config。

所以我的问题是:我们可以使用这种 Spring Cloud Config 机制来重新加载属性来重新加载SSL证书吗?这个想法是触发属性重新加载机制,并且ssl是通过这些属性配置的,我认为也许可以重新加载。

我正计划自动化获取和更新Let's Encrypt证书的过程,并避免我的应用程序停机。

最诚挚的问候!

1 个答案:

答案 0 :(得分:2)

SSL证书是在JVM级别应用的-Spring Boot和Spring Cloud Config对此都没有任何控制权,因此要应用新证书,将需要重新启动运行您的应用程序的JVM实例,因为您已经更新了您的密钥库。在不关闭JVM的情况下能够动态添加证书将是一个主要的安全漏洞。

在AWS生态系统中,其想法是,如果您关闭虚拟机,则会丢失该虚拟机,并且其中的内容将永远消失。借助Spring Cloud(Config,Zuul,Eureka),您可以启动通过Config向Eureka注册的VM,Zuul使用Eureka中的信息进行负载平衡。因此,应采用的方法是,使用更新后的证书通过Spring Boot实例启动另一个VM,并杀死由于AWS而蒸发的旧VM,Zuul负责做为“反向Web”的工作。代理”,根据需要将请求路由到新的Web服务器。

沿着这条路线打开的蠕虫病毒罐是,现在您必须实现4个服务器和一个VPN来支持它们,您的Zuul服务器成为外部Web请求的目标,并且您可能需要研究“断路器” “如何处理HTTP请求失败的模式-下一个要研究的问题是Hystrix。

对于Digital Ocean,我不确定您可能需要做些什么,但是不可避免地需要重新启动JVM。