我的TLS有问题。我创建了我的TLS秘密:
kubectl create secret tls ingress-tls --key certificate.key --cert certificate.crt
然后我在入口中使用它:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress
annotations:
kubernetes.io/ingress.global-static-ip-name: "beta"
spec:
tls:
- hosts:
- '*.host.com'
- 'beta.host.com'
secretName: ingress-tls
backend:
serviceName: nginx
servicePort: 443
入口是完美创建的,我可以通过浏览器访问,没问题,当我卷曲或使用程序邮递员时,问题就出了,我得到证书错误。
卷曲:(60)SSL证书问题:无法获取本地发行者 证书此处有更多详细信息:https://curl.haxx.se/docs/sslcerts.html
curl无法验证服务器的合法性,因此可以 没有建立与之的安全连接。进一步了解 情况及其解决方法,请访问提到的网页 以上。
我正在使用GCE驱动程序,它是Google云的默认GKE。
我一直在阅读如何添加ca键,但是此错误未解决。
我做了以下事情:
kubectl create secret generic ca --from-file certificate.ca.crt
我在入口处添加了以下注释:
ingress.kubernetes.io/auth-tls-secret: ca
但是不起作用。
有人知道如何修复CA证书吗?该证书是在DonDominio网站上购买的,它是通配符。
非常感谢您!
答案 0 :(得分:1)
问题基本上是,当我生成TLS机密时,我使用的是.crt而不是.pem。通过更改秘密,我可以卷曲以将其检测为有效证书。
新命令:
kubectl create secret tls ingress-tls --key certificate.key --cert certificate.pem
感谢@ Michael-sqlbot!
答案 1 :(得分:1)
如果您有 .ca-bundle + crt 文件,将 .ca-bundle 附加到 .crt 的末尾并从新的 crt 文件中创建机密将解决此问题。这是因为您需要所有入口的直接密钥。