Kubernetes容器化JVM应用运行时修改cacerts的方案探讨
容器化JVM应用注入自定义CA的方案探讨
我有多个运行在Kubernetes上的容器化JVM应用,这些应用需要信任额外的自定义/私有CA(这些CA事前未知,应用将部署在多个独立且拥有各自PKI的数据中心)。基础镜像中的cacerts文件在运行时不可写。
目前我考虑了以下几种方案:
- 方案1:不提供修改
cacerts的选项,强制各数据中心通过容器卷管理并注入自己的cacerts文件。但各数据中心不会仅运行JVM应用,他们不愿自行管理JVM特有的cacerts——这意味着他们可能需要为每种技术都做同样的操作,因此我不太喜欢这个方案。 - 方案2:让
cacerts文件在运行时可写,并在入口点修改cacerts。这个方案看起来相当务实,但我怀疑让cacerts在运行时可写是一种不良实践,因为攻击者可能会修改其无权更改的配置。 - 方案3:不使用JDK TLS,在「客户端」层面设置信任库(例如CXF)。但该方案存在局限性和复杂性,需要为每个客户端进行配置(例如在CXF中,获取初始WSDL文件似乎不受CXF控制,而是由JVM处理……),这意味着如果客户端无法(正确)配置,该方案就无法生效。
经过权衡,我又回到了第二种方案,现在有两个问题:
- 让
cacerts在运行时可写是否属于不良实践? - 是否存在我遗漏的方案,能够在不使
cacerts可写的情况下注入(任意)额外CA?
内容的提问来源于stack exchange,提问作者ciis0
相关产品推荐
相关产品推荐

