database - 什么时候需要提供CA文件?

标签 database mongodb go ssl mongodb-atlas

我正在使用Gogo编写使用MongoDB的服务器,并且正在做一些有关如何启用SSL来连接数据库的研究。我发现了几个示例,这些示例解释了如何添加CA文件。像这样:

mongo.NewClientWithOptions(connectionString, mongo.ClientOpt.SSLCaFile(caFilePath))

我在Atlas上使用托管数据库,并且它们声明默认情况下所有连接都使用SSL。这个关于另一个问题的answer显示了如何使用Go连接到Atlas,但是代码示例未使用CA文件。我也找不到可以从Atlas下载CA文件的选项。

这使我有些困惑,并导致以下问题。何时需要提供如上所示的CA文件才能使用SSL?如果SSL始终需要提供CA文件,那么从何处获得CA文件以连接到Atlas上的托管群集?

最佳答案

启动TLS连接时,始终需要CA证书来验证服务器。有时,它已经安装在您的平台上并自动使用。当此类根证书不可用时,您必须在连接期间提供CA文件。 CA文件用于验证服务器提供的证书。受信任的第三方提供此CA,并且(可能通过受信任的各方链)向服务器提供证书,因此您可以通过使用CA验证其证书来验证服务器是谁声称它是谁。

所有平台都带有一组初始的根证书,可以验证著名的第三方生成的证书。您连接到的mongodb服务器可能正在使用这样的证书,因此,您的OS证书可用于对其进行验证。如果您拥有未经第三方验证的带有自己的CA的PKI,则需要一个单独的由CA签名的CA文件。然后,您需要传递该CA文件来验证服务器,因为您的根证书不会包含您的自定义CA。

关于database - 什么时候需要提供CA文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61194735/

相关文章:

database - SQLite : Begin-commit for WAL mode

linux - 如何在 Linux 上使用 Go 指定自定义 SSL 根目录

go - 如何在 Go 中发送 POST 请求?

database - NHibernate 桌面应用程序 : should it use multiple sessions?

mysql - 在数据库中存储多选调查答案的最佳方式

java - 数据结构 : Checking if a record exists in a database?

Mongodb 更新有限数量的文件

node.js - 使用 Mongoose 使用 arrayFilters 查找

java - spring-boot 2.1.0 mongo - CodecConfigurationException : Can't find a codec for class java. time.Year

json - 如何在 Go 中设置自定义 json 响应结构