我需要在我的spring启动应用程序中使用动态密钥库,因为在任何时候我都可能需要更改它们,并且我不想有任何停机时间。从我在这篇文章中看到的情况来看,我有三种选择:编写自定义密钥管理器;使用反向代理;或者在tomcat上使用本地jmx重新加载ssl上下文。在最后一篇文章中,我真的不明白这意味着什么。反向代理似乎更简单,但它是最好的方法吗?如果有人能告诉我哪一个会是最好的解决方案,为什么或推荐其他东西将不胜感激。
bmvo0sr51#
您可以有自己的实现 SslStoreProvider 这将使您能够从您想要的任何来源(不需要在磁盘上)获取密钥库/信任库。那就退房吧 @RefreshScope 你可以重新创建豆子(就像你自己的豆子一样) SslStoreProvider )用它。您可以在这里找到一个示例(请注意,创建这个示例只是为了演示SpringBoot1.x中的一个bug,该bug在2.x中修复)。
SslStoreProvider
@RefreshScope
pftdvrlh2#
外部反向代理方法是最灵活的。它不需要对应用程序或部署逻辑进行任何更改,并且可以解决大多数场景。缺点是您的体系结构变得更加复杂,需要为代理服务器提供额外的服务器资源。您可以更进一步,进行蓝绿部署:蓝绿部署方法通过确保您有两个尽可能相同的生产环境来实现这一点。在任何时候,比如说蓝色,其中一个是活的。当你准备一个新的软件版本时,你要在绿色环境中进行最后的测试。一旦软件在绿色环境下工作,您就可以切换路由器,以便所有传入的请求都进入绿色环境—蓝色的请求现在处于空闲状态。
2条答案
按热度按时间bmvo0sr51#
您可以有自己的实现
SslStoreProvider
这将使您能够从您想要的任何来源(不需要在磁盘上)获取密钥库/信任库。那就退房吧@RefreshScope
你可以重新创建豆子(就像你自己的豆子一样)SslStoreProvider
)用它。您可以在这里找到一个示例(请注意,创建这个示例只是为了演示SpringBoot1.x中的一个bug,该bug在2.x中修复)。
pftdvrlh2#
外部反向代理方法是最灵活的。它不需要对应用程序或部署逻辑进行任何更改,并且可以解决大多数场景。缺点是您的体系结构变得更加复杂,需要为代理服务器提供额外的服务器资源。
您可以更进一步,进行蓝绿部署:
蓝绿部署方法通过确保您有两个尽可能相同的生产环境来实现这一点。在任何时候,比如说蓝色,其中一个是活的。当你准备一个新的软件版本时,你要在绿色环境中进行最后的测试。一旦软件在绿色环境下工作,您就可以切换路由器,以便所有传入的请求都进入绿色环境—蓝色的请求现在处于空闲状态。