首页 > 解决方案 > Mongo go驱动程序-在连接启用ssl和加密密钥时出现密钥不匹配错误

问题描述

尝试从 golang 应用程序 kubernetes pod 连接到 mongodb 服务器时出现以下错误。

错误:tls:私钥与公钥不匹配

我正在使用 mongo-go-driver 版本 1.4.1

密钥是 RSA 加密的。-----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: ..

要连接的 PFB 应用程序代码

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

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

    uri := "mongodb://user:password@<mongoserver>:27017/?authSource=<dbname>&authMechanism=scram-sha-1&connect=direct&ssl=true&sslClientCertificateKeyFile=%s&sslClientCertificateKeyPassword=%s&sslInsecure=true&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 驱动程序的密钥解密不正确而发生?

标签: mongodbgosslmongo-gostudio3t

解决方案


推荐阅读