cloudhut / charts

Helm chart for deploying Kowl (Business) in Kubernetes

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

tls: bad record MAC

dicolasi opened this issue · comments

I having the above error with the following configuration:

kowl:
  # Config.yaml is required for Kowl and Kowl Business.
  # See reference config: https://github.com/cloudhut/kowl/blob/master/docs/config/kowl.yaml)
  config:
    kafka:
      brokers:
        - kafka-prod-kafka-bootstrap.kafka.svc:9093
      tls:
        enabled: true
        caFilepath: /etc/kowl/secrets/kafka-tls-ca
        certFilepath: /etc/kowl/secrets/kafka-tls-cert
        keyFilepath: /etc/kowl/secrets/kafka-tls-key
        insecureSkipTlsVerify: true
      schemaRegistry:
        enabled: true
        urls: [ "http://cp-schema-registry:8081" ] # Url with scheme is required, e.g. ["http://localhost:8081"]
    logger:
      level: debug

Secret is correctly created and contains the right certificate:

apiVersion: v1
data:
  kafka-sasl-password: [...]
  kafka-tls-ca: IiI=
  kafka-tls-cert: [...]
  kafka-tls-key: [...]
  kafka-tls-passphrase: IiI=
kind: Secret
metadata:
  creationTimestamp: "2020-12-17T09:12:13Z"
  labels:
    app.kubernetes.io/instance: kowl
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: kowl
    app.kubernetes.io/version: v1.2.2
    helm.sh/chart: kowl-1.2.0
  name: kowl
  namespace: kafka
  ownerReferences:
  - apiVersion: kubernetes-client.io/v1
    controller: true
    kind: ExternalSecret
    name: kowl
    uid: 39e02a07-e535-4aa9-9346-a828e87013b6
  - apiVersion: apps/v1
    blockOwnerDeletion: true
    controller: false
    kind: Deployment
    name: kowl
    uid: bb895019-d2ab-43ea-a20e-9baa1ec527f9
  resourceVersion: "13463764"
  selfLink: /api/v1/namespaces/kafka/secrets/kowl
  uid: 36c34e14-d9ff-4d91-868a-8c2e3ef95caf
type: Opaque

here the full log:

oauth2-proxy [2020/12/17 09:10:40] [logger.go:490] mapping path "/" => upstream "http://127.0.0.1:8080"
oauth2-proxy [2020/12/17 09:10:40] [logger.go:490] OAuthProxy configured for Keycloak Client ID: kafka-client
oauth2-proxy [2020/12/17 09:10:40] [logger.go:490] Cookie settings: name:_oauth2_proxy secure(https):true httponly:true expiry:168h0m0s domains: path:/ samesite: refresh:disabled
oauth2-proxy [2020/12/17 09:10:40] [logger.go:490] HTTP: listening on :4180
kowl {"level":"info","msg":"started Kowl","version":"v1.2.2","built":"2020-11-23T15:49:59Z","git_sha":"284eb140e520ee647f8801992c54e7ad05b3c0c3"}
kowl {"level":"info","ts":"2020-12-17T09:16:43.972Z","msg":"connecting to Kafka cluster"}
kowl {"level":"debug","ts":"2020-12-17T09:16:43.972Z","msg":"Initializing new client","source":"sarama"}
kowl {"level":"debug","ts":"2020-12-17T09:16:43.972Z","msg":"client/metadata fetching metadata for all topics from broker kafka-prod-kafka-bootstrap.kafka.svc:9093","source":"sarama"}
kowl {"level":"debug","ts":"2020-12-17T09:16:43.974Z","msg":"Connected to broker at kafka-prod-kafka-bootstrap.kafka.svc:9093 (unregistered)","source":"sarama"}
kowl {"level":"debug","ts":"2020-12-17T09:16:44.004Z","msg":"client/metadata got error from broker -1 while fetching metadata: local error: tls: bad record MAC","source":"sarama"}
kowl {"level":"debug","ts":"2020-12-17T09:16:44.004Z","msg":"Closed connection to broker kafka-prod-kafka-bootstrap.kafka.svc:9093","source":"sarama"}
kowl {"level":"debug","ts":"2020-12-17T09:16:44.004Z","msg":"client/metadata no available broker to send metadata request to","source":"sarama"}
kowl {"level":"debug","ts":"2020-12-17T09:16:44.004Z","msg":"client/brokers resurrecting 1 dead seed brokers","source":"sarama"}
kowl {"level":"debug","ts":"2020-12-17T09:16:44.004Z","msg":"client/metadata retrying after 250ms... (3 attempts remaining)","source":"sarama"}
kowl {"level":"debug","ts":"2020-12-17T09:16:44.255Z","msg":"client/metadata fetching metadata for all topics from broker kafka-prod-kafka-bootstrap.kafka.svc:9093","source":"sarama"}
kowl {"level":"debug","ts":"2020-12-17T09:16:44.256Z","msg":"Connected to broker at kafka-prod-kafka-bootstrap.kafka.svc:9093 (unregistered)","source":"sarama"}
kowl {"level":"debug","ts":"2020-12-17T09:16:44.267Z","msg":"client/metadata got error from broker -1 while fetching metadata: local error: tls: bad record MAC","source":"sarama"}
kowl {"level":"debug","ts":"2020-12-17T09:16:44.267Z","msg":"Closed connection to broker kafka-prod-kafka-bootstrap.kafka.svc:9093","source":"sarama"}
kowl {"level":"debug","ts":"2020-12-17T09:16:44.268Z","msg":"client/metadata no available broker to send metadata request to","source":"sarama"}
kowl {"level":"debug","ts":"2020-12-17T09:16:44.268Z","msg":"client/brokers resurrecting 1 dead seed brokers","source":"sarama"}
kowl {"level":"debug","ts":"2020-12-17T09:16:44.268Z","msg":"client/metadata retrying after 250ms... (2 attempts remaining)","source":"sarama"}
kowl {"level":"debug","ts":"2020-12-17T09:16:44.518Z","msg":"client/metadata fetching metadata for all topics from broker kafka-prod-kafka-bootstrap.kafka.svc:9093","source":"sarama"}
kowl {"level":"debug","ts":"2020-12-17T09:16:44.519Z","msg":"Connected to broker at kafka-prod-kafka-bootstrap.kafka.svc:9093 (unregistered)","source":"sarama"}
kowl {"level":"debug","ts":"2020-12-17T09:16:44.530Z","msg":"client/metadata got error from broker -1 while fetching metadata: local error: tls: bad record MAC","source":"sarama"}
kowl {"level":"debug","ts":"2020-12-17T09:16:44.530Z","msg":"Closed connection to broker kafka-prod-kafka-bootstrap.kafka.svc:9093","source":"sarama"}
kowl {"level":"debug","ts":"2020-12-17T09:16:44.530Z","msg":"client/metadata no available broker to send metadata request to","source":"sarama"}
kowl {"level":"debug","ts":"2020-12-17T09:16:44.530Z","msg":"client/brokers resurrecting 1 dead seed brokers","source":"sarama"}
kowl {"level":"debug","ts":"2020-12-17T09:16:44.530Z","msg":"client/metadata retrying after 250ms... (1 attempts remaining)","source":"sarama"}
kowl {"level":"debug","ts":"2020-12-17T09:16:44.781Z","msg":"client/metadata fetching metadata for all topics from broker kafka-prod-kafka-bootstrap.kafka.svc:9093","source":"sarama"}
kowl {"level":"debug","ts":"2020-12-17T09:16:44.782Z","msg":"Connected to broker at kafka-prod-kafka-bootstrap.kafka.svc:9093 (unregistered)","source":"sarama"}
kowl {"level":"debug","ts":"2020-12-17T09:16:44.811Z","msg":"client/metadata got error from broker -1 while fetching metadata: local error: tls: bad record MAC","source":"sarama"}
kowl {"level":"debug","ts":"2020-12-17T09:16:44.811Z","msg":"Closed connection to broker kafka-prod-kafka-bootstrap.kafka.svc:9093","source":"sarama"}
kowl {"level":"debug","ts":"2020-12-17T09:16:44.811Z","msg":"client/metadata no available broker to send metadata request to","source":"sarama"}
kowl {"level":"debug","ts":"2020-12-17T09:16:44.811Z","msg":"client/brokers resurrecting 1 dead seed brokers","source":"sarama"}
kowl {"level":"debug","ts":"2020-12-17T09:16:44.811Z","msg":"Closing Client","source":"sarama"}
kowl {"level":"fatal","ts":"2020-12-17T09:16:44.811Z","msg":"failed to create kafka service","error":"failed to create kafka client: kafka: client has run out of available brokers to talk to (Is your cluster reachable?)"}
kowl stream closed

The certificate is a self-signed one created by strimzi. Without insecureSkipTlsVerify: true kwol won't start since the certificate it is not signed by a trusted CA.
Here the error:

│ kowl {"level":"debug","ts":"2020-12-17T09:25:59.813Z","msg":"client/metadata got error from broker -1 while fetching metadata: x509: certificate signed by unknown authority","source":"sarama"}                                                                             │

I haven't seen that error yet. What TLS protocols are allowed on the server side? Maybe any helpful log messages on the server side?

Regarding insecureSkipTlsVerify this only means that the certificate will be checked for validity. If issued correctly and used with the right DNS you don't need to enable this for self signed certificates. You can configure which CAs you trust by passing a CA file into Kowl.

@weeco this is the log I got server side:

│ 2020-12-17 09:27:36,654 INFO [SocketServer brokerId=0] Failed authentication with /10.0.1.43 (SSL handshake failed) (org.apache.kafka.common.network.Selector) [data-plane-kafka-network-thread-0-ListenerName(INTERNAL-9093)-SSL-3]

I haven't seen that error yet. What TLS protocols are allowed on the server side? Maybe any helpful log messages on the server side?

Regarding insecureSkipTlsVerify this only means that the certificate will be checked for validity. If issued correctly and used with the right DNS you don't need to enable this for self signed certificates. You can configure which CAs you trust by passing a CA file into Kowl.

I am using an internal listener, not an exposed one.

    listeners:                                                                                                                                                                                                                                                               │
│     - authentication:                                                                                                                                                                                                                                                        │
│         type: tls                                                                                                                                                                                                                                                            │
│       name: internal                                                                                                                                                                                                                                                         │
│       port: 9093                                                                                                                                                                                                                                                             │
│       tls: true                                                                                                                                                                                                                                                              │
│       type: internal

@dicolasi That shouldn't matter. I'd recommend you take a look at your certificates again and see what SANs are configured. There are multiple ways to connect internally to your cluster. (e. g. kafka:9093 or kafka.namespace.svc.cluster.local:9093, ...)

Above Kafka server error message seem to indicate that endpoint identification is required which does not work. I hope that gives you something to research for. I'm not very familar with Strimzi and I won't be able to assist with that issue, sorry.

@weeco I am already connected properly:

kafka:
      brokers:
        - kafka-prod-kafka-bootstrap.kafka.svc:9093
        

Thanks anyway :)

@dicolasi The DNS is probably used to verify the SSL certificate though. Hence I mentioned that your specific DNS might not be one of the SANs in your TLS certificates