gpt4 book ai didi

java - 无法通过 Ingress Nginx Controller 进行 SSL 传递

转载 作者:行者123 更新时间:2023-12-04 22:40:26 25 4
gpt4 key购买 nike

我有一个 Java Spring Boot Application并且我已将服务器配置为在 SSL 上运行,这是强制性的。

server:
port: 8443
ssl:
enabled: true
key-store-type: pkcs12
key-store: ${KEYSTORE}
key-password: ${KEYSTORE_PASSWORD}
key-store-password: ${KEYSTORE_PASSWORD}
client-auth: need
我为我的域创建了一个证书 *.kahootali.com从 LetsEncrypt 证书并通过运行为 keystore 创建一个 p12 文件
openssl pkcs12 -export -CAfile ca.crt -in cert.pem -inkey key.pem -certfile cert.pem -out kstore.p12
我想使用 Ingress Nginx Controller 在 Kubernetes 上公开它,所以我创建了 secret
kubectl create secret generic store --from-file=kstore.p12
我已经部署了应用程序,可以看到 deployment files,当我将本地 8443 端口转发到其服务的 8443 并运行时
curl -iv --cacert ca.crt --cert mediator_cert.pem --key mediator_key.pem --resolve 'spring-app.kahootali.com:8443:127.0.0.1' https://spring-app.kahootali.com:8443/
它工作正常并返回
* Added spring-app.kahootali.com:8444:127.0.0.1 to DNS cache
* Hostname spring-app.kahootali.com was found in DNS cache
* Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to spring-app.kahootali.com (127.0.0.1) port 8444 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: ca.crt
CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Request CERT (13):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Certificate (11):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS handshake, CERT verify (15):
* TLSv1.2 (OUT), TLS change cipher, Client hello (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server did not agree to a protocol
* Server certificate:
* subject: CN=*.kahootali.com
* start date: Feb 11 10:27:47 2021 GMT
* expire date: May 12 10:27:47 2021 GMT
* subjectAltName: host "spring-app.kahootali.com" matched cert's "*.kahootali.com"
* issuer: C=US; O=Let's Encrypt; CN=R3
* SSL certificate verify ok.
> GET / HTTP/1.1
> Host: spring-app.kahootali.com:8444
> User-Agent: curl/7.58.0
> Accept: */*
>
< HTTP/1.1 404
HTTP/1.1 404
< X-Application-Context: application:8443
X-Application-Context: application:8443
< Content-Type: application/json;charset=UTF-8
Content-Type: application/json;charset=UTF-8
< Transfer-Encoding: chunked
Transfer-Encoding: chunked
< Date: Sun, 14 Feb 2021 14:29:47 GMT
Date: Sun, 14 Feb 2021 14:29:47 GMT

<
* Connection #0 to host spring-app.kahootali.com left intact
{"timestamp":1613312987350,"status":404,"error":"Not Found","message":"No message available","path":"/"}
但是当我为它创建一个 Ingress 并 ssl-passthrough 它时
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: spring-monitoring-app
labels:
app: spring-monitoring-app
annotations:
ingress.kubernetes.io/force-ssl-redirect: "true"
ingress.kubernetes.io/rewrite-target: /
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
spec:
rules:
- host: spring-app.kahootali.com
http:
paths:
- path: /
backend:
serviceName: spring-monitoring-app
servicePort: http
tls:
- hosts:
- spring-app.kahootali.com
secretName: tls-cert
它给 ERR_BAD_SSL_CLIENT_AUTH_CERT在浏览器和应用程序调试级别日志中,它提供
Error during SSL handshake
java.io.IOException: EOF during handshake.
The SNI host name extracted for this connection was [spring-app.kahootali.com]
Handshake failed during wrap
javax.net.ssl.SSLHandshakeException: Empty server certificate chain

最佳答案

我发布我的评论作为更好的可见性的答案:
根据 the docs SSL 直通 默认情况下禁用该功能。为了启用它,您需要启动 nginx 入口 Controller --enable-ssl-passthrough旗帜。确保你没有忘记它。
你也可以看看这个troubleshooting steps验证您的 nginx 入口 Controller 配置。
如果有帮助,请告诉我。

关于java - 无法通过 Ingress Nginx Controller 进行 SSL 传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66196561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com