Драйвер Mongo go — выдает ошибку несоответствия ключей при подключении с включенным ssl и зашифрованным ключом

#mongodb #go #ssl #mongo-go #studio3t

#mongodb #Вперед #ssl #mongo-go #studio3t

Вопрос:

Я получаю следующую ошибку при попытке подключиться к серверу mongodb из приложения golang kubernetes pod.

Ошибка: tls: закрытый ключ не соответствует открытому ключу

Я использую mongo-go-driver версии 1.4.1

Ключ зашифрован RSA. —— НАЧАТЬ ЗАКРЫТЫЙ КЛЮЧ RSA —— Proc-Type: 4, ЗАШИФРОВАННЫЙ DEK-Info: ..

Код приложения PFB для подключения

     m.context, _ = context.WithTimeout(context.Background(), 30*time.Second)

    certFilePath := <path>
    keyPassword := <password>

    uri := "mongodb://user:password@<mongoserver>:27017/?authSource=<dbname>amp;authMechanism=scram-sha-1amp;connect=directamp;ssl=trueamp;sslClientCertificateKeyFile=%samp;sslClientCertificateKeyPassword=%samp;sslInsecure=trueamp;sslAllowInvalidCertificates=true"
    uri = fmt.Sprintf(uri, certFilePath, keyPassword)

    log.Println("ConnectDB: creating mongo client new")
    clientOptions := []*options.ClientOptions{
        options.Client().ApplyURI(uri),//.SetAuth(credential),
    }

    log.Println("ConnectDB: connecting client")
    m.client, err = mongo.Connect(m.context, clientOptions...)
    if nil != err {
        panic(err)
    }
  

Тот же ключ и сертификаты работают нормально при подключении с использованием Robo 3T или Studio 3T

Пожалуйста, помогите мне устранить ошибку несоответствия ключей. Происходит ли это из-за неправильного дешифрования ключа драйвером golang?

Комментарии:

1. Какой закрытый ключ не соответствует какому открытому ключу?

2. Закрытый ключ, предоставляемый клиентом (приложением golang), и открытый ключ на сервере mongodb. Однако тот же закрытый ключ работает с Robo 3T или Studio 3T

3. Если под открытым ключом сервера вы подразумеваете сертификат сервера, то закрытый ключ, используемый клиентом, не используется для проверки сертификата сервера — клиент использует для этого сертификат центра сертификации.

4. Я добавил sslInsecure как true, клиент примет все сертификаты сервера. Серверу необходимо проверить аутентификацию клиента, которая не выполняется

5. Ошибка, которую вы указали, не имеет ничего общего с аутентификацией.