我在Google容器引擎中有一个多层应用程序,我有一个单一静态IP地址的入口,我将转发多个域。每个域都需要自己的ssl证书(让我们加密)。我面临的问题是我没有看到在负载均衡器中使用多个证书的任何选项。看起来每个IP地址都有一个全局转发规则,只能转发到一个只能使用一个SSL证书的SSL(端口443)HTTPS代理。
我不想使用多域SSL证书,因为管理它将是一个巨大的目标。
这不是一些奇怪的异国情况用例,但非常正常的要求。这里有什么合适的解决方案?
我在考虑为每个域设置静态IP并使用路由路由到单个IP“前端”,但是每个IP都需要花费一些资金,因此拥有数十个或数百个域将在财务上疯狂(100个域)每月花费1800美元,不包括数据/流量。)
答案 0 :(得分:1)
更新: GCE现在通过将最多10个SSL证书附加到负载均衡器来支持SNI。您可以使用TargetHttpsProxy或TargetSslProxy指定SSL证书列表。
=======================
您可以使用网络负载平衡器并终止VM实例上的ssl连接。请注意,网络负载平衡无法将您的流量转发到不同的区域。如果你想要,你需要在不同的地区单独设置它们。
参考: https://cloud.google.com/compute/docs/load-balancing/network/
答案 1 :(得分:1)
TLS config is an array,您可以在其中定义multiple host to secret映射。
答案 2 :(得分:0)
我已成功使用kube-lego在Google容器引擎中设置了多个SSL / TLS证书的网站,这些证书从Let's Encrypt中获取证书,并在它们即将过期时自动更新。根据标签,您可能正在使用Cloud Engine的其他部分而不是Kubernetes,但使用Kube-lego可能至少可以简化容器的管理。
我们使用两个名称空间 - 生产和登台 - 总共我们使用了大约50个证书来支持所有服务。如果不使用kube-lego,管理所有证书将非常麻烦。
Kube-lego会侦听入口更改,如果进行了新的部署,它将采取措施,以防适当的配置到位。例如,前几天我不得不为登台添加新服务。只需向部署脚本添加一个小配置,就会自动发出SSL / TLS证书。这是我部署的入口,并且在一分钟之内,proxy.domain.com的证书正在运行。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: proxy-web-ingress
namespace: staging
annotations:
kubernetes.io/tls-acme: "true"
kubernetes.io/ingress.class: "nginx"
spec:
tls:
- hosts:
- proxy.domain.com
secretName: proxy-web-tls
rules:
- host: proxy.domain.com
http:
paths:
- path: /
backend:
serviceName: proxy-web-svc
servicePort: 80
一个缺点是,出于可以理解的原因,一周可能有not issue infinite number个证书。但是,在安装过程中,可以使用Let's Encrypt的暂存环境,没有任何限制。使用kube-lego时,Nginx用于处理SSL / TLS的路由和终止。