Java Spring Boot |使用动态密钥库/信任库

Java Spring Boot |使用动态密钥库/信任库,java,spring,spring-boot,security,ssl,Java,Spring,Spring Boot,Security,Ssl,我需要在我的Spring Boot应用程序中使用动态密钥库,因为在任何时候我都可能不得不更改它们,我不想有任何停机时间 从我在帖子中看到的情况来看,我有三个选择: 编写自定义密钥管理器 使用反向代理 或者在Tomcat上使用本地JMX重新加载SSL上下文 在最后一篇文章中,我真的不明白这意味着什么。反向代理似乎更简单,但它是最好的方法吗 如果有人能告诉我哪一个是最好的解决方案,以及为什么或推荐其他解决方案,我将不胜感激。外部反向代理方法是最灵活的。它不需要对应用程序或部署逻辑进行任何更改,并

我需要在我的Spring Boot应用程序中使用动态密钥库,因为在任何时候我都可能不得不更改它们,我不想有任何停机时间

从我在帖子中看到的情况来看,我有三个选择:

  • 编写自定义密钥管理器
  • 使用反向代理
  • 或者在Tomcat上使用本地JMX重新加载SSL上下文
在最后一篇文章中,我真的不明白这意味着什么。反向代理似乎更简单,但它是最好的方法吗


如果有人能告诉我哪一个是最好的解决方案,以及为什么或推荐其他解决方案,我将不胜感激。

外部反向代理方法是最灵活的。它不需要对应用程序或部署逻辑进行任何更改,并且可以解决大多数情况。缺点是您的体系结构变得更加复杂,需要为代理服务器提供额外的服务器资源

您可以更进一步,执行以下操作:

蓝绿部署方法通过确保您有两个尽可能相同的生产环境来实现这一点。在任何时候,其中一个,比如说蓝色,是活的。当您准备新版本的软件时,您将在绿色环境中进行最后阶段的测试。一旦软件在绿色环境中工作,您就切换路由器,以便所有传入的请求都进入绿色环境-蓝色的请求现在处于空闲状态


您可以拥有自己的实现,它将使您能够从您想要的任何源(不需要在磁盘上)获取密钥库/信任库。 然后,您可以使用它重新创建bean(比如您自己的
SslStoreProvider


您可以找到一个示例(请注意,创建此示例只是为了演示spring boot 1.x中的一个bug,该bug已在2.x中修复)。

看起来它可以解决我的问题!我对Spring Boot很新,所以它需要一段时间才能实现,无论如何我会尽快给出一些反馈。谢谢