Kubernetes Ingress возвращает другой сертификат с fabric8, чем с curl - PullRequest
0 голосов
/ 07 августа 2020

Используя fabric8 kubernetes client , я получил сертификат, отличный от сертификата curl на той же конечной точке.

В частности, я получил входящий самозаверяющий сертификат (CN = Kubernetes Ingress Controller Fake Сертификат) вместо указанного.

Конфигурация Ingress (результат kubectl edit ingress)

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  creationTimestamp: "2020-08-07T09:33:18Z"
  generation: 1
  labels:
    app: dummy
    app.kubernetes.io/component: dummy-component
    app.kubernetes.io/instance: dummy-instance
    app.kubernetes.io/managed-by: Dummy
    app.kubernetes.io/name: dummy
    app.kubernetes.io/part-of: dummy-sample
    app.kubernetes.io/version: 1.12.0-SNAPSHOT
  managedFields:
  - apiVersion: extensions/v1beta1
    fieldsType: FieldsV1
    fieldsV1:
      f:metadata:
        f:labels:
          .: {}
          f:app: {}
          f:app.kubernetes.io/component: {}
          f:app.kubernetes.io/instance: {}
          f:app.kubernetes.io/managed-by: {}
          f:app.kubernetes.io/name: {}
          f:app.kubernetes.io/part-of: {}
          f:app.kubernetes.io/version: {}
      f:spec:
        f:rules: {}
        f:tls: {}
    manager: okhttp
    operation: Update
    time: "2020-08-07T09:33:18Z"
  - apiVersion: networking.k8s.io/v1beta1
    fieldsType: FieldsV1
    fieldsV1:
      f:status:
        f:loadBalancer:
          f:ingress: {}
    manager: nginx-ingress-controller
    operation: Update
    time: "2020-08-07T09:33:19Z"
  name: dummy-instance
  namespace: dummy-namespace
  resourceVersion: "1887"
  selfLink: /apis/extensions/v1beta1/namespaces/dummy-namespace/ingresses/dummy-instance
  uid: 2b7839fa-da65-45f3-9f1f-8169cf1325d8
spec:
  rules:
  - host: minikube
    http:
      paths:
      - backend:
          serviceName: dummy-instance
          servicePort: 9999
        path: /dummy-instance
        pathType: ImplementationSpecific
  tls:
  - hosts:
    - minikube
    secretName: minikube-tls-3
status:
  loadBalancer:
    ingress:
    - ip: 172.17.0.3

Я не вижу причины, по которой Ingress вернет другой сертификат для того же хоста, на той же конечной точке, с другим клиентом.

Мое единственное предположение заключалось в том, что сертификат, содержащийся в секрете, был несовместим (или имел более низкий приоритет в шифровании?) с Fabric8 ClientHello (okhttp3 здесь) , но это не так.

Идея отладки у меня заканчивается, так что если у вас есть предположение, это будет приветствоваться!

1 Ответ

0 голосов
/ 10 августа 2020

Клиент не отправляет расширение SNI на ClientHello.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...