ssl - Kubernetes Ingress SSL 证书问题
问题描述
我的 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 网站上购买的,它是一个通配符。
解决方案
问题基本上是我在生成 TLS 密钥时使用的是 .crt 而不是 .pem。通过更改秘密,我得到 curl 以将其检测为有效证书。
新命令:
kubectl create secret tls ingress-tls --key certificate.key --cert certificate.pem
感谢@Michael-sqlbot!
推荐阅读
- daemontools - 使用 envdir 设置运行进程中的环境变量
- performance-testing - 在加特林加速用户期间在场景消息中注入 0 个用户
- php - 对具有相同 ID 的循环中的元素进行分组
- linux - 在脚本中使用管道时,如何帮助用户避免失控进程?
- sql - 是否可以使用 sql 实现 DFS(深度优先搜索)?
- java - 如何读取文件并返回该文件中的字母
- python - Python,用户选择多个文件后获取文件名
- java - @JsonProperty 没有覆盖布尔值并且仍然删除 `is`
- python - 缺少 Spyder 依赖项 qtconsole >= 4.6.0: 4.5.1
- java - 使用 Puzzle 并弄清楚如何修复越界错误