我正在使用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/