Kubernetes入口SSL证书问题

时间:2019-06-22 16:49:35

标签: ssl kubernetes google-cloud-platform google-kubernetes-engine

我的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网站上购买的,它是通配符。

非常感谢您!

2 个答案:

答案 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 文件中创建机密将解决此问题。这是因为您需要所有入口的直接密钥。