【问题标题】:k8s reverse proxy secure upstream with self signed cert nginx使用自签名证书 nginx 的 k8s 反向代理安全上游
【发布时间】:2020-09-24 12:31:12
【问题描述】:

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;
}

我在这里错过了什么吗!我当前的配置看起来像这样。我不希望来自客户端的传递 ssl 将在此处终止。

  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 kubernetes reverse-proxy kubernetes-ingress nginx-reverse-proxy


    【解决方案1】:

    我的问题确实是日志所说的证书。文档不清楚!我必须使用 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"
    

    【讨论】:

      【解决方案2】:

      尝试将以下行添加到您的 Ingress 配置文件的注释部分:

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

      看看:ingress-nginx-ssl.

      【讨论】:

      • 感谢您的回复! nginx.ingress.kubernetes.io/ssl-passthrough 将加密的 SSL 请求直接发送到后端。我不想这样做,来自浏览器的请求将在 aws alb 入口控制器中终止。
      猜你喜欢
      • 2017-06-15
      • 2020-01-07
      • 2016-09-22
      • 1970-01-01
      • 2021-08-06
      • 2012-09-09
      • 2011-05-12
      • 2017-12-18
      • 1970-01-01
      相关资源
      最近更新 更多