azure - 使用 python 的 cosmosdb mongo api 中的 SSL 握手失败

标签 azure azure-cosmosdb pymongo azure-cosmosdb-mongoapi ssl-handshake

我正在尝试连接 azure cosmos 中的数据库,该数据库使用 Python 中的 Mongo DB API。当我创建客户端时,我收到 SSL 握手失败错误,但我不知道如何解决它。我知道有一些线程讨论了这个问题,并且我已将其建议添加到我的代码中,但是我无法使其工作。

我在创建客户端时添加了tlsCAFile=certifi.where(),但一直无法解决。我见过有人推荐 ssl_cert_reqs=ssl.CERT_NONEtlsAllowInvalidCertificates=True,但我不想消除问题并失去安全性。此外,即使假设安全损失,我也无法使其发挥作用。

我依靠此 Azure Cosmos 帮助页面来创建我的客户端。我已经配置了环境变量。

Link to azure tutorial

这是我的代码总结:

import getpass
import certifi
import pymongo
import os
import sys
import pymongo
from dotenv import load_dotenv
from random import randint

#[...]

def main():
    """Connect to the API for MongoDB, create DB and collection, perform
    CRUD operations
    """
    # Variable for resource group name
    load_dotenv()
    CONNECTION_STRING = os.environ.get("COSMOS_CONNECTION_STRING")
    client = pymongo.MongoClient(CONNECTION_STRING,tls=True,tlsCAFile=certifi.where())

    for prop, value in vars(client.options).items():
        print("Property: {}: Value: {} ".format(prop, value))

    try:
        client.server_info()  # validate connection string
    except pymongo.errors.ServerSelectionTimeoutError:
        raise TimeoutError(
            "Invalid API for MongoDB connection string \
                or timed out when attempting to connect"
        )

    collection = create_database_unsharded_collection(client)
    document_id = insert_sample_document(collection)

    read_document(collection, document_id)
    update_document(collection, document_id)
    delete_document(collection, document_id)


if __name__ == "__main__":
    main()

欢迎任何帮助,提前非常感谢。我也有这个问题Microsoft Q&A

编辑:我正在公司的网络上工作,我了解到这可能会导致问题。这可能与我的问题有关吗?

我有 python (3.8.5)python-dotenv (1.0.0)certifi (2020.6.20)pymongo(4.4.1)dnspython(2.4.2)MongoDB 服务器版本 4.2

最佳答案

我已经成功解决了这个问题。如果您使用公司网络,出于安全原因,他们会关闭一些端口。就我而言,出于安全原因,端口 10255 被关闭,并且客户端配置良好。

Link that helped me

关于azure - 使用 python 的 cosmosdb mongo api 中的 SSL 握手失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76915252/

相关文章:

azure - Azure 存储 Blob 的 Web 应用程序中的 log4net?

azure - Cosmos Db 需要哪些权限才能访问 Azure 门户中的数据库并查看数据

javascript - find 查询查找检索 mongodb 中特定元素的数据

python - 使用 pymongo $addToSet 嵌套嵌套对象

azure - 是否可以在没有LB IP的Windows 2016集群中创建始终配置的SQL?

c# - 使用 Visual Studio 部署时如何将 Azure Functions 设置为最初禁用

python - Azure 认知服务文本转语音 REST API 中的 requests.exceptions.ConnectTimeout 错误

azure - 查询特定格式

asp.net - 我无法使用 "host.docker.internal:some-port"将我的 ASP .NET 应用程序从 Docker 容器连接到我的计算机主机数据库

mongodb - 如何使用 insert_many 方法处理 pymongo AutoReconnect 异常