启用并配置TLS
概述
在本指南中,您可以了解如何使用TLS协议来保护您与MongoDB部署的连接。要配置使用TLS的连接,请在应用程序的config/database.php文件中启用TLS选项,并可选择提供证书以供验证。config/database.php
文件。
提示
要了解更多关于TLS的信息,请参阅维基百科上的传输层安全性.
启用TLS
在您的应用程序config/database.php文件中,您可以通过以下方式之一在MongoDB部署的连接上启用TLS:
将连接字符串中的
tls
选项设置为true
在mongodb连接条目的
options
属性中将tls
选项设置为true
从以下选项中选择:在连接字符串和连接选项选项卡中查看相应的代码示例
'connections' => [ 'mongodb' => [ 'driver' => 'mongodb', 'dsn' => 'mongodb://<hostname>:<port>/?tls=true', 'database' => 'myDB', ] ]
'connections' => [ 'mongodb' => [ 'driver' => 'mongodb', 'dsn' => '<connection string>', 'database' => 'myDB', 'options' => [ 'tls' => true, ], ] ]
要查看连接选项的完整列表,请参阅连接选项.
注意
如果您的连接字符串通过包含mongodb+srv
前缀来使用DNS SRV记录,则默认情况下您的连接已启用TLS。
配置证书
为了成功初始化TLS请求,您的应用程序可能需要提供加密证书以证明其身份。您的应用程序的证书必须以PEM文件格式存储,以便在连接时启用TLS。
重要
对于生产使用,我们建议您的MongoDB部署使用由同一证书颁发机构生成和签名的有效证书。对于测试,您的部署可以使用自签名证书。
以下列表描述了客户端可以提供以建立启用TLS的连接的组件
TLS组件 | 描述 |
---|---|
证书颁发机构(CA) | 一个或多个证书颁发机构,在建立TLS连接时信任。您可以将此文件的路径传递给 tlsCAFile 选项。 |
客户端证书 | 一个数字证书,允许服务器验证您的应用程序的身份以建立加密的网络连接。您可以将此文件的路径传递给 tlsCertificateKeyFile 选项。 |
证书密钥 | 客户端证书私钥文件。此密钥通常包含在证书文件中。如果您必须提供此项目,证书和密钥应连接在一个文件中,您可以将其传递给 tlsCertificateKeyFile 选项。 |
密码短语 | 如果私钥被加密,则用于解密私钥的密码。您可以将此文件的路径传递给 tlsCertificateKeyFilePassword 选项。 |
参考证书
如果需要,您必须在配置您的mongodb
连接时引用您的证书,以便服务器在客户端连接之前验证它们。
我们建议您在连接配置的options
属性中引用您的证书并设置其他TLS选项,而不是在连接字符串中。这提高了您应用程序中的代码可读性。
在options
属性中设置以下选项以引用您的证书
tlsCAFile
tlsCertificateKeyFile
tlsCertificateKeyFilePassword
注意
出于测试目的,您可以将以下选项设置为true
以禁用验证
tlsAllowInvalidCertificates
tlsAllowInvalidHostnames
或者,您可以将tlsInsecure
选项设置为true
以隐式设置前面的两个选项。
在生产环境中指定这些选项可能会使您的应用程序不安全。有关更多信息,请参阅服务器手册中的连接选项参考。
以下示例配置了启用TLS的连接
'connections' => [ 'mongodb' => [ 'driver' => 'mongodb', 'dsn' => '<connection string>', 'database' => 'myDB', 'options' => [ 'tls' => true, 'tlsCAFile' => '<path to CA certificate>', 'tlsCertificateKeyFile' => '<path to private client certificate>', 'tlsCertificateKeyFilePassword' => '<path to client key passphrase>', ] ] ]
更多信息
有关设置URI选项的更多信息,请参阅MongoDB\\Driver\\Manager::__construct() API文档。
有关在连接上启用TLS的更多信息,请参阅以下服务器手册文档