如何在AKS集群内的ASP.NET Core Pod间轻松配置HTTPS通信
AKS集群内ASP.NET Core服务HTTPS通信的方案疑问与可行性分析
我们有一个由多个ASP.NET Core实现的Web服务组成的应用,所有服务都部署在Azure Kubernetes Service(AKS)集群的Pod中,现在需要通过HTTPS保障集群内部服务间的通信安全,核心需要完成三个步骤:
- 为每个服务获取TLS证书;
- 让Pod信任这些TLS证书(或其签名CA);
- 在证书有效期结束时自动轮换证书。
已知相关信息
- 有StackOverflow回答指出这类方案复杂度较高,不建议采用,但我仍想明确该方案的具体组成;
- LettuceEncrypt等项目可以自动化完成证书获取和轮换(即上述步骤1和3),只需要对接支持ACME协议的CA;
- Kubernetes官方文档《Managing TLS in a cluster》提到Kubernetes API使用类ACME草案协议管理证书签名请求(CSR);
- 但文档中是通过cfssl工具手动完成搭建本地CA、提交CSR、签名CSR等操作,我疑惑这些API除了将CSR作为Kubernetes资源存储之外,还有哪些实际作用;
- 文档提及Kubernetes集群自带根CA可用于为Pod签发TLS证书,但未说明具体实现方式,同时给出警告:“可配置集群使用集群根CA,但绝不应该依赖它”;
- 这个表述看起来有些矛盾,既然有现成的CA可用,为何不建议依赖?使用它能大幅简化流程。
方案设想与疑问
我设想了一个简单方案:为每个服务的Kestrel配置LettuceEncrypt,对接集群自带的根CA,同时让所有Pod信任该根CA(将对应证书导入为受信任根证书)。
请问这个方案是否可行?我忽略了哪些关键要点?
更新于2022-07-26:该方案需要支持Windows容器。
内容的提问来源于stack exchange,提问作者Fabian Schmied
相关产品推荐
相关产品推荐

