java - 弹簧靴 | 使用动态密钥库/信任库
问题描述
我需要在我的 Spring Boot 应用程序中使用动态密钥库,因为在任何时候我都可能不得不更改它们并且我不想有任何停机时间。
从我看到的这篇文章来看,我有三个选择:
- 编写自定义 KeyManager;
- 使用反向代理;
- 或者在 Tomcat 上使用本地 JMX 重新加载 SSL 上下文。
在最后一个我真的不明白这意味着什么。反向代理似乎更简单,但它是最好的方法吗?
如果有人能指出哪一个是最好的解决方案,以及为什么或推荐其他东西,将不胜感激。
解决方案
外部反向代理方法是最灵活的。它不需要对您的应用程序或部署逻辑进行任何更改,并且可以解决大多数情况。缺点是您的架构变得更加复杂,并且代理服务器需要额外的服务器资源。
您可以更进一步,进行蓝绿部署:
蓝绿部署方法通过确保您拥有两个尽可能相同的生产环境来做到这一点。在任何时候,其中一个,例如蓝色,是实时的。当您准备软件的新版本时,您将在绿色环境中进行最后阶段的测试。一旦软件在绿色环境中运行,您切换路由器,以便所有传入请求都进入绿色环境 - 蓝色的现在空闲。