让我们在GKE上使用HApRoxy进行加密

时间:2019-11-27 12:06:58

标签: ssl kubernetes haproxy lets-encrypt

我正在关注一些文章,以在我的应用程序上实现SSL。但是无法理解如何生成证书,或者是否需要生成证书?

最主要的是,从概念上讲,我无法将它们放在一起。

让我解释一下情况。

我正在使用HAProcxy Ingress Controller和HTTP(S)L7负载均衡器在GKE群集中运行“用户注册”(基于REST API)应用程序。我有一个托管我的网站的现有域(例如mydomain.com)。托管平台已提供SSL证书,该证书可保护通配域(* .mydomain.com),并且我的网站以http(冒号)(斜杠斜杠)mydomain.com打开。我创建了一个子域apps.mydomain.com,并将“ A”记录指向GCP HTTP(S)负载平衡器IP,以便可以通过Internet访问该应用程序。我可以在端口80上通过Internet访问我的应用程序。但是在Post 443(带有https)上它不起作用。

在文章中,我需要使用ACME生成证书和密钥,并且需要在Cluster Issuer和Ingress中使用相同的证书和密钥。

ref#digitalocean.com/community/tutorials/how-to-to-set-an-nginx-ingress-with-cert-manager-on-digitalocean-kubernetes

我需要向我的域/托管服务提供商询问证书和密钥吗? 或者我可以使用ACME生成另一个主机名为apps.mydomain.com的证书?

即使我从托管提供的网站(有一个选项-您拥有服务器的用户)下载了证书和密钥,也仅在Ingress中使用了该证书和密钥(将证书和ley用作秘密)。但是我的网站变成了不安全模式,并且卷曲API https://apps.mydomain.com/CreteUser时出现错误:

设置TCP_NODELAY

  • schannel:无法接收握手,需要更多数据
  • schannel:与apps.mydomain.com端口443的SSL / TLS连接(第2/3步)
  • schannel:加密数据获得1845
  • schannel:加密数据缓冲区:偏移量1845长度4096
  • 通道:SNI或证书检查失败:SEC_E_WRONG_PRINCIPAL(0x80090322)-目标主体名称不正确。
  • 关闭连接0
  • schannel:通过demo.apps.product.barnsleypujo.co.uk端口443关闭SSL / TLS连接
  • schannel:清除安全上下文句柄 curl:(35)schannel:SNI或证书检查失败:SEC_E_WRONG_PRINCIPAL(0x80090322)-目标主体名称不正确。

你能帮我吗?

谢谢, Suvendu

1 个答案:

答案 0 :(得分:1)

证书主题(*.example.com中的星号表示您可以用所需的任何内容替换名称的第一个域名部分,例如apps.example.commail.example.com

RFC2818状态:

  

如果在给定类型中存在多个给定类型的标识   证书(例如,多个dNSName名称,以下任意一项的匹配项   该集合被认为是可以接受的。)名称可能包含通配符   字符*,被认为与任何单个域名匹配   组件或组件片段。例如, .a.com与foo.a.com匹配,但   不是bar.foo.a.com。 f .com与foo.com匹配,但与bar.com不匹配。

在您的错误消息中,您的名字为demo.apps.product.example.com,与通配符证书不匹配,因此会出现错误SEC_E_WRONG_PRINCIPAL

要解决此问题,请替换点,例如demo-apps-product.example.com或没有点的完全不同的东西。