k8s反向代理使用自签名证书nginx保护上游

k8s反向代理使用自签名证书nginx保护上游,nginx,kubernetes,reverse-proxy,kubernetes-ingress,nginx-reverse-proxy,Nginx,Kubernetes,Reverse Proxy,Kubernetes Ingress,Nginx Reverse Proxy,k8s入口控制器未将证书传递给上游https服务 有了nginx,我可以实现这样的目标 location /upstream { proxy_pass https://backend.example.com; proxy_ssl_certificate /etc/nginx/client.pem; proxy_ssl_certificate_key /etc/nginx/client.key; } 我是不是错过了什么!我当前的配置如

k8s入口控制器未将证书传递给上游https服务

有了nginx,我可以实现这样的目标

location /upstream {
    proxy_pass                https://backend.example.com;
    proxy_ssl_certificate     /etc/nginx/client.pem;
    proxy_ssl_certificate_key /etc/nginx/client.key;
}
我是不是错过了什么!我当前的配置如下所示。我不希望来自客户端的passssl提交在此终止

  apiVersion: networking.k8s.io/v1beta1
  kind: Ingress
  metadata:
  name: backend
  namespace:  default
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: "/$1"
    nginx.ingress.kubernetes.io/backend-protocol: HTTPS
    nginx.ingress.kubernetes.io/secure-backends: "true"
    nginx.ingress.kubernetes.io/proxy-ssl-secret: "proxy-ca-secret"
    nginx.ingress.kubernetes.io/proxy-ssl-name: "backend.example.com"
  spec:
    rules:
    - http:
        paths:
        - path: /(api/auth/.*)
          backend:
          serviceName: auth
          servicePort: 8080
日志显示

 SSL_do_handshake() failed (SSL: error:14094412:SSL routines:ssl3_read_bytes:sslv3 alert bad certificate:SSL alert number 42) while SSL handshaking to upstream

我用openssl证书验证了base64证书,看起来不错。提前谢谢

尝试将以下行添加到注释部分的入口配置文件中:

nginx.ingress.kubernetes.io/ssl-passthrough: "true",  
nginx.ingress.kubernetes.io/ssl-redirect: "true"

看一看:。

在我的案例中,问题确实是日志所说的证书。文件不清楚!我必须使用ca为证书创建通用密钥,因为我的证书是自签名的

kubectl create secret generic proxy-ca-secret --from-file=tls.crt=client.crt --from-file=tls.key=client.key --from-file=ca.crt=ca.crt
它所犯的错误是在cert.pem中有证书和链,并作为tls导入

kubectl create secret tls proxy-ca-secret --key "client.key" --cert "client.pem"

谢谢你的回复!nginx.ingres.kubernetes.io/ssl-passthrough将加密的ssl请求直接发送到后端。我不想这样做,来自浏览器的请求将在aws alb入口控制器中终止。