我有一个入口(nginx),它代理一个应用程序暴露8443(SSL)与一个自签名证书。它在http中工作正常,但在https中我得到以下错误:
2022/10/31 18:04:28 [error] 39#39: *1855 SSL_do_handshake() failed (SSL: error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version:SSL alert number 70) while SSL handshaking to upstream, client: 127.0.0.1, server: _, request: "GET /web-service/ HTTP/2.0", upstream: "https://10.2.1.37:8443/web-service/", host: "localhost:8443"
经过一番研究,我确定我的Web服务仅支持:
"TLSv1.3" and "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_SHA256:TLS_AE"
我蜷缩在那里,如果我使用任何其他东西,而不是显式的TLSv1.3,我会得到一个类似的错误。我还强制Web服务降级到TLSv1.2,它工作,但显然这不是很好。
有没有办法配置入口nginx后端配置,以只使用TLSv1.3和这些协议在入口本身。
类似于ssl_protocols TLSv1.3;
的东西,但作为后端级别的注解?我尝试了一个片段,但它似乎没有应用在正确的级别。
下面是我目前的代码:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: hello-world-ingress2
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
nginx.ingress.kubernetes.io/secure-backends: "true"
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/auth-tls-verify-client: "off"
nginx.ingress.kubernetes.io/rewrite-target: /web-service/$1
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /web-service/(.*)
pathType: Prefix
backend:
service:
name: my-web-service
port:
number: 8443
1条答案
按热度按时间mklgxw1f1#
似乎需要添加configMap来更改默认行为。
请参阅以下链接末尾的:
https://kubernetes.github.io/ingress-nginx/user-guide/tls/#default-tls-version-and-ciphers