xxx.home.arpa我有一個奇怪的問題 - 當通過例如 openssl s_client -connect xxx.home.arpa:443一個(示例)pod詢問我的內部主機名時
- image: docker.io/library/node:8.17.0-slim
name: node
args:
- "86400"
command:
- sleep
正在通過DEFAULT NGINX INGRESS CERTIFICATE獲得回應。
同一命令的同一命名空間中的其他 pod正在使用我的自定義證書獲得回應。
問題: 為什么一個 pod 收到相同請求的不同證書?
出于此問題的目的,請假設 cert-manager 和 certs 應該正確配置 - 它們在大多數系統中作業,只有少數 pod 行為不端
配置:k8s nginx ingress、calico CNI、管理 DNS 回應的自定義 coredns svc(可能很重要?)、我自己的 CA 權限。
e:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
cert-manager.io/cluster-issuer: ca-issuer
kubernetes.io/ingress.class: nginx
creationTimestamp: "2022-03-13T06:54:17Z"
generation: 1
name: gerrit-ingress
namespace: gerrit
resourceVersion: "739842"
uid: f22034ab-0ed8-4779-b01e-2738e6f63eb7
spec:
rules:
- host: gerrit.home.arpa
http:
paths:
- backend:
service:
name: gerrit-gerrit-service
port:
number: 80
pathType: ImplementationSpecific
tls:
- hosts:
- gerrit.home.arpa
secretName: gerrit-tls
status:
loadBalancer:
ingress:
- ip: 192.168.10.2
大部分配置(DNS 除外)都在此處。
uj5u.com熱心網友回復:
事實證明,我最初的猜測相去甚遠——特定容器有一組工具,它們都被配置為不發送服務器名稱(或者根本不支持 SNI,這是問題所在),特別yarn:1.x是openssl:1.0.x.
問題當然出在 SNI 上,較新的 openssl 或 curl 默認使用 -servername 來滿足 SNI 要求。
為此,我考慮了兩種解決方案:
- 不支持 SNI 的客戶端的通配符 DNS,這更容易但感覺不安全
- 帶有反向代理的 TLS 終止允許我透明地使用具有 SNI 支持的客戶端,我還沒有嘗試過。
我使用了通配符 DNS,但我認為這不應該在 prod 中完成。:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/448870.html
標籤:nginx ssl Kubernetes Kubernetes入口 TLS1.2
上一篇:如何讓OpenJDK16與啟用SSL的nginx服務器通信?
下一篇:從連接表中選擇最大值
