【问题标题】:How to setup a Kubernetes secret using GoDaddy certs for Nginx Ingress controller如何使用 GoDaddy 证书为 Nginx Ingress 控制器设置 Kubernetes 机密
【发布时间】:2022-03-19 05:30:43
【问题描述】:

我正在努力使用 GoDaddy 证书设置 kubernetes 机密,以便将其与 Kubernetes 集群中的 Ingress Nginx 控制器一起使用。

我知道 GoDaddy 不是解决这个问题的好去处,但那不在我手上...

这里是我尝试过的(主要基于这个github post):

我收到一封来自 GoDaddy 的邮件,其中包含两个文件:generated-csr.txtgenerated-private-key.txt

然后我在 GoDaddy 的网站上下载了 cert 包(我选择了“Apache”服务器类型,因为它是 Nginx 推荐的)。存档包含三个文件(具有生成的名称):xxxx.crtxxxx.pem(两个文件的内容相同,它们代表域证书)和 gd_bundle-g2-g1.crt(这是中间证书)。

然后我继续连接域证书和中间证书(让我们将其命名为 chain.crt)并尝试使用以下命令使用这些文件创建一个秘密:

kubectl create secret tls organization-tls --key generated-private-key.txt --cert chain.crt

我的挣扎从这里开始,因为它抛出了这个错误:

error: tls: failed to find any PEM data in key input

我该如何解决这个问题,或者我缺少什么?

很抱歉打扰这种琐碎的事情,但已经两天了,我真的很难找到适用于 Ingress Nginx 用例的适当文档或示例......

非常欢迎任何帮助或提示,非常感谢您!

【问题讨论】:

  • 您是否在您的key 所在的同一目录中运行它?你确定你的私钥是.pem 格式吗?正如您所读到的here:“--cert 的公钥证书必须是 .PEM 编码(Base64 编码的 DER 格式),并且与 --key 的给定私钥相匹配。私钥必须是常用的称为 PEM 私钥格式,未加密。在这两种情况下,来自 PEM 的初始行和最后一行(例如,--------BEGIN CERTIFICATE----- 和 --------END CERTIFICATE- --- 对于证书)不包括在内。”
  • 感谢 mario 的时间和精力。密钥格式不正确,因为文件开头缺少换行符。所以这个特殊的问题现在已经解决了。但由于 goDaddy 缺乏文档和故障排除工作,我建议切换到另一个证书颁发机构。我希望这样我的旅程不会那么痛苦。再次感谢!
  • 也遇到了这个问题。它实际上并没有丢失一行,它只是被 GoDaddy 错误地用 BOM 编码为 UTF8,而应该用简单的 UTF8 编码 - 因此在文件的开头删除了一个错误的字节,这搞砸了 base64 编码。正确编码(见我的回答)可以彻底解决问题。

标签: kubernetes ssl-certificate kubernetes-ingress


【解决方案1】:

这是一个社区 Wiki 答案,发布是为了提高可见性,因此请随时编辑它并添加您认为重要的任何其他详细信息。

正如 cmets 中提到的 OP,通过在文件开头添加新行解决了该问题

“密钥格式不正确,因为它缺少换行符 文件的开头。所以这个特殊的问题现在已经解决了。”

this answer 中也解决了类似问题。

【讨论】:

    【解决方案2】:

    这个问题很棘手,但很容易解决。

    GoDaddy 提供的私钥文件未正确编码:它以带有 BOM 的 UTF8 编码,因此它以不应该存在的字节开头。提取私钥时nginx ingress不理解,导致报错。

    简单的解决方法是运行以下命令来正确编码私钥文件:

    iconv -c -f UTF8 -t ASCII generated-private-key.txt > generated-private-key-anssi.txt
    

    然后你像往常一样得到base64私钥:

    cat generated-private-key-anssi.txt | base64 -w 0
    

    现在,入口正确地获得了 ssl 证书。如果您需要查看 ingress 的日志以了解 CERT 的处理方式,只需在 ingress-nginx 命名空间中列出 pod 和日志即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-17
      • 2019-07-19
      • 1970-01-01
      • 1970-01-01
      • 2019-09-05
      • 2019-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多