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

时间:2019-02-11 17:28:18

标签: c# mongodb amazon-web-services ssl aws-documentdb-mongoapi

我有一个使用TLS的AWS DocumentDB集群。我想使用.net coreC#的{​​{1}}应用程序连接到它。

AWS提供的连接字符串包括此部分C# MongoDB Driver,即the certificate chain given by Amazon。我可以使用此证书通过MongoDB Shell正确连接到数据库。

我的问题是?ssl_ca_certs=rds-combined-ca-bundle.pem不支持MongoDB C# Driver文件。似乎仅支持.pem文件。我尝试转换.pfx,但是它没有私钥。我可以从.pem生成.cer所需的.pfx,但是不能生成私钥。即使这样,这种解决方案似乎还是粗略的和非正式的。

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

2 个答案:

答案 0 :(得分:0)

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

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

->在您的环境中设置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)现在,在左侧窗格中(在“控制台根”下,您将看到“证书”选项。单击它。

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”),“ hello”:“ world”} < / p>

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

答案 1 :(得分:0)

此线程与Cannot Connect to AWS Database using TLS with Server CA Validation

完全相同

但是我不知道如何举报。