带有 Kafka-Go 和证书的 Golang TLS。无连接

标签 go ssl apache-kafka x509certificate

我需要使用信任库和 keystore 与我的客户端建立 TLS 连接。 我的商店是P12格式的。我的 keystore 只有一把私钥和一把公钥。我的信任库只有一个集群证书。

我的问题是,我没有连接到我的 ssl-Kafka。可能握手失败,但 kafka-go 不打印任何消息。

下面是我的代码。也许有配置问题? 有谁知道我如何打印错误?或者我的配置错误在哪里?


getKafkaReader(topic string) *kafka.Reader {

    if consumer == nil {
        consumer = kafka.NewReader(kafka.ReaderConfig{
            Brokers:     []string{kafkaConfig.Host},
            GroupID:     os.Getenv("KAFKA_CONSUMER_GROUP"),
            Topic:       topic,
            Partition:   0,
            MinBytes:    10e2, // 1KB
            MaxBytes:    10e5, // 1MB
            Dialer:      getDialer(),
        })
    }
    return consumer
}

func getDialer() *kafka.Dialer {

    dialer := &kafka.Dialer{
        Timeout:   5 * time.Second,
        DualStack: true,
        TLS:       tlsConfig(),
    }

    return dialer
}

func tlsConfig() *tls.Config {

    // Keystore
    keys, _ := ioutil.ReadFile(kafkaConfig.KeyStoreLocation)
    blocks, err := p12.ToPEM(keys, kafkaConfig.KeyStorePassword)
    if err != nil {
        log.Fatal(err.Error())
    }

    var pemData []byte
    for test, b := range blocks {
        _ = test
        pemData = append(pemData, pem.EncodeToMemory(b)...)
    }

    cert, err := tls.X509KeyPair(pemData, pemData)
    if err != nil {
        log.Fatal(err.Error())
    }
   //Truststore
    caCert, err := ioutil.ReadFile("./certificates/ca.pem")
    if err != nil {
        log.Fatal(err)
    }

    caCertPool := x509.NewCertPool()
    caCertPool.AppendCertsFromPEM(caCert)

    config := &tls.Config{
        Certificates: []tls.Certificate{cert},
        RootCAs:      caCertPool,
    }
    return config
}

最佳答案

我有答案。我有自签名证书。 这就是为什么我必须设置

tlsConfig.InsecureSkipVerify = true

关于带有 Kafka-Go 和证书的 Golang TLS。无连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59100599/

相关文章:

go - 如何处理 'go test all' 中的预期+无关故障?

ssl - Curl 说 "requested domain name does not match the server' s 证书”,但它似乎匹配

ssl - 使用外部 JMS 与 Weblogic 进行 MQ TLS 通信

java.lang.IllegalArgumentException : Jetty ALPN/NPN has not been properly configured 异常

amazon-web-services - Amazon Kinesis 与 AWS Manage Service Kafka (MSK) -(从本地连接)

string - 将字节 slice 转换为字符串时,Golang 会进行任何转换吗?

html - ResponseWriter 为什么以及何时会生成原始 html?

asp.net - SSL 相关问题

apache-kafka - 无论如何,对于kafka Streams应用程序中的不同输入主题,是否可以使用不同的 auto.offset.reset 策略?

go get thrift package 失败,未找到 repo