【发布时间】:2022-03-19 05:30:43
【问题描述】:
我正在努力使用 GoDaddy 证书设置 kubernetes 机密,以便将其与 Kubernetes 集群中的 Ingress Nginx 控制器一起使用。
我知道 GoDaddy 不是解决这个问题的好去处,但那不在我手上...
这里是我尝试过的(主要基于这个github post):
我收到一封来自 GoDaddy 的邮件,其中包含两个文件:generated-csr.txt 和 generated-private-key.txt。
然后我在 GoDaddy 的网站上下载了 cert 包(我选择了“Apache”服务器类型,因为它是 Nginx 推荐的)。存档包含三个文件(具有生成的名称):xxxx.crt 和 xxxx.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