gpt4 book ai didi

mongodb - 无法使用带有服务器 CA 验证的 TLS 连接到 AWS 数据库

转载 作者:可可西里 更新时间:2023-11-01 09:12:42 26 4
gpt4 key购买 nike

AWS 文档指出,要连接到我的 DocumentDB 集群,我需要使用以 ?ssl_ca_certs=rds-combined-ca-bundle.pem&replicaSet=rs0 结尾的查询字符串。 It is a root certificate chain我的客户应该验证。我不需要 Client Certificate .

使用 MongoDB C# 驱动程序和此特定查询,以及同一目录中的 .pem 文件,我无法建立连接。如果我使用相同的 .pem 文件和来自 Mongo Shell 的查询字符串,我可以正确连接到我的数据库。它仅不适用于我的 .net 核心应用程序,该应用程序也在 AWS 上运行。

通过从集群中删除 TLS 并从查询中删除 ssl_ca_certs 选项,我可以正确连接到我的集群。

我想我可以使用 openssl 将我的 .pem 文件转换为 .pfx,但我必须提供 。 pfx 密码和 MongoDB documentation states that

It is imperative that when loading a certificate with a password, the PrivateKey property not be null. If the property is null, it means that your certificate does not contain the private key and will not be passed to the server.

我如何使用 the .pem file provided by Amazon AWS使用 C# MongoDB 驱动程序连接到我的数据库?

最佳答案

###使用带有 SSL 的简单 .Net 控制台应用程序连接到文档数据库。

->首先,通过将参数 tls 设置为“已启用”,在您的文档数据库集群上启用 SSL。确保重启集群的写入器节点以重启整个集群,以便应用参数组更改。默认情况下,TLS 在您启动新的 Doc DB 集群时启用。

->在您的环境中设置 SSL 证书:

1) 从以下链接在源 Windows 计算机上下载 PKCS#7 SSL 证书:

https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.p7b

2)点击开始菜单,点击运行并输入mmc

3)在MMC中,文件->添加/删除管理单元。

4) 从管理单元列表中选择证书并单击添加。

5) 受信任的 CA 证书应该在本地计算机存储中,因此选择“计算机帐户”单选按钮,单击下一步,然后选择“本地计算机”。单击下一步,然后单击完成。

6) 现在从左侧面板(在 Console Root 下,您将看到“证书”选项。单击它。

7) 将出现一个列表,右键单击“受信任的根证书颁发机构”,然后选择所有任务->导入

8) 在打开的窗口中,单击下一步,浏览在步骤 1 中下载的证书 (.p7b) 文件(如果找不到,请从文件类型下拉列表中选择所有文件),然后然后继续单击下一步,最后单击完成。然后保存配置。

->然后写了下面的代码:

---------------------------------------------------

using MongoDB.Bson;
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;
namespace FirstDocDB
{
public class Program
{
public static void Main(string[] args)
{
var connectionString = "mongodb://pulkit:password@ClusterID:27017/?ssl=true&sslVerifyCertificate=true&replicaSet=rs0";
var client = new MongoClient(connectionString);
var database = client.GetDatabase("test");
var collection = database.GetCollection("stuff");
var document = collection.Find(new BsonDocument()).FirstOrDefault();
Console.WriteLine(document.ToString());
}
}
}

---------------------------------------------------

->构建并运行后,我成功地获得了名为“stuff”的集合中的文档作为输出:{ “_id”:ObjectId(“5c5a63b10cf861158c1d241c”),“你好”:“世界”

因此,在执行上述步骤后,我可以使用 .Net 的 Mongo 驱动程序成功连接到 Document DB。

关于mongodb - 无法使用带有服务器 CA 验证的 TLS 连接到 AWS 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54836737/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com