如何使用Google Load Balancer使用多个SSL证书



我在Google容器引擎中有一个多层应用程序,我有一个带有单个静态IP地址的入口,我将转发多个域。每个域将需要其自己的SSL证书(让我们加密)。我面临的问题是,我看不到在负载平衡器中使用多个证书的任何选择。看来每个IP地址都有一个全局转发规则,该规则只能转发到一个SSL(端口443)HTTPS代理,该代理只能使用一个SSL证书。

我不想使用多域SSL证书,因为它将是巨大的PITA。

这不是一些奇怪的异国用例,但要求很正常。这里的适当解决方案是什么?

我正在考虑为每个域设置静态IP,并使用路线路由到达单个IP"前端",但是每个IP都花费一些钱,因此拥有数十个或数百个域名在经济上只是疯狂的(100个域名)

将花费每月1800美元,数据/流量)。

更新:GCE现在通过将最多10个SSL证书附加到负载平衡器来支持SNI。您可以使用targethtpsproxy或targetsslproxy指定SSL证书列表。

参考:https://cloud.google.com/compute/docs/load-balancing/http/ssl-certificates#multiple_ssl_ssl_certificate_example

=======================
您可以使用网络负载平衡器并终止VM实例上的SSL连接。请注意,网络负载平衡不能将您的流量转发到不同的区域。如果需要,您需要在不同地区分别设置它们。

参考:https://cloud.google.com/compute/docs/load-balancing/network/

TLS配置是一个数组,您可以在其中定义多个主机为秘密映射。

我使用Kube-lego在Google Container Engine中成功设置了使用多个SSL/TLS证书的网站,该网站使用Kube-Lego从Let's Encrypt获取证书并在即将到期时自动更新它们。根据标签,您可能使用云引擎以外的其他部分,但是使用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

一个缺点是,出于可以理解的原因,可能不会每周发布无限数量的证书。但是,在设置过程中,可以与登台环境一起使用,让我们加密没有限制。使用Kube-Lego时,使用NGINX来处理SSL/TLS的路由和终止。

最新更新