我一直在使用 Traefik 在 Kubernetes 集群上实现自动 https,而且效果很好!现在,我实际上想在 Traefik 级别禁用终止,让我的后端处理 https 以及客户端证书身份验证。
目前,这是我的设置
配置文件
defaultEntryPoints = ["http","https"]
[entryPoints]
[entryPoints.http]
address = ":80"
compress = true
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
compress = true
[entryPoints.https.tls]
[[entryPoints.https.tls.certificates]]
CertFile = "/ssl/tls.crt"
KeyFile = "/ssl/tls.key"
这是我在 Kubernetes 上的入口
apiVersion: v1
kind: Service
metadata:
name: backend-svc
spec:
ports:
- port: 80
targetPort: 80
selector:
app: backend
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: backend-ingress
annotations:
kubernetes.io/ingress.class: traefik
spec:
tls:
- secretName: tls-cert
rules:
- host: somewhere.com
http:
paths:
backend:
serviceName: backend-svc
servicePort: 80
在过去的三个月里,这对我很有帮助,但是使用这种配置,我的后端无法在传入的请求中找到客户端证书。
通常,我会从端口 80 重定向到 443 升级。现在,当我尝试直接进入 443 时,它会出现内部服务器错误。当我尝试将其添加到入口注释时
traefik.frontend.passTLSCert: true # Gives 404 Error.
traefik.frontend.passTLSCert: "true" # Gives Bad Gateway Error
任何帮助都将受到高度赞赏。
谢谢你。