使用SSL与MongoDB C#驱动程序连接到DocumentDB

Dav*_*d G 6 c# ssl mongodb amazon-web-services aws-documentdb-mongoapi

我有一个使用TLS的AWS DocumentDB集群。我想从我的连接到它.net core的应用程序中C#使用C# MongoDB Driver

AWS提供的连接字符串包括这一部分?ssl_ca_certs=rds-combined-ca-bundle.pem,这是Amazon提供的证书链。我可以使用此证书通过MongoDB Shell正确连接到数据库。

我的问题是MongoDB C# Driver不支持.pem文件。似乎仅支持.pfx文件。我尝试转换.pem,但缺少私钥。我可以通过生成.cer所需.pfx.pem,但不能生成私钥。即使这样,这种解决方案似乎还是粗略的和非正式的。

是否有一种简单的方法通过MongoDB C#驱动程序使用SSL连接到DocumentDB?如果是,我应该使用什么解决方案?

小智 5

通过简单的 .Net 控制台应用程序和 SSL 连接到文档数据库。

\n

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

\n

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

\n

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

\n

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

\n

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

\n

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

\n

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

\n

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

\n

6)现在从左侧窗格(在控制台根目录下),您将看到 \xe2\x80\x98Certificates\xe2\x80\x99 选项。单击它。

\n

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

\n

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

\n

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

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

->构建并运行后,我成功地获得了名为 \xe2\x80\x9cstuff\xe2\x80\x9d 的集合中的文档作为输出: { "_id" : ObjectId("5c5a63b10cf861158c1d241c"), "hello" : “世界” }

\n

因此,按照上述步骤后,我成功地使用 .Net 的 Mongo 驱动程序连接到文档数据库。

\n