【问题标题】:Kubernetes Ingress SSL certificate problemKubernetes Ingress SSL 证书问题
【发布时间】:2019-11-05 03:01:23
【问题描述】:

我的 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

入口创建完美,我通过浏览器访问没有问题,当我做卷曲或使用程序邮递员时出现问题,我得到证书错误。

curl: (60) SSL 证书问题:无法获取本地颁发者 证书更多细节在这里:https://curl.haxx.se/docs/sslcerts.html

curl 未能验证服务器的合法性,因此可以 不与它建立安全连接。要了解有关此的更多信息 情况以及如何解决,请访问提到的网页 以上。

我正在使用 GCE 驱动程序,它是来自谷歌云的默认 GKE。

我一直在阅读如何添加ca密钥,但是这个错误并没有修复。

我做了以下事情:

kubectl create secret generic ca --from-file certificate.ca.crt

我在入口处添加了以下注释:

ingress.kubernetes.io/auth-tls-secret: ca

但不工作。

有人知道如何修复 CA 证书吗?该证书是在 DonDominio 网站上购买的,它是一个通配符。

【问题讨论】:

  • 对于 CURL 问题,请阅读这篇文章。 jhanley.com/curl-ssl-certificate-problem
  • 会不会是cert.pem中没有包含中间证书链?您应该在购买证书时收到它。
  • 哦,是的 @Michael-sqlbot 就是这样,我将 .crt 更改为 .pem 并且有效!非常感谢!

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


【解决方案1】:

问题基本上是我在生成 TLS 密钥时使用的是 .crt 而不是 .pem。通过更改秘密,我得到 curl 以将其检测为有效证书。

新命令:

kubectl create secret tls ingress-tls --key certificate.key --cert certificate.pem 

感谢@Michael-sqlbot!

【讨论】:

    【解决方案2】:

    如果您有 .ca-bundle + crt 文件,将 .ca-bundle 附加到 .crt 的末尾并从新的 crt 文件创建密钥将解决此问题。这是因为您需要所有即时密钥才能进入您的入口。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-26
      • 1970-01-01
      • 2015-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-27
      相关资源
      最近更新 更多