在本页面
MongoDB支持TLS / SSL(传输层安全性/安全套接字层)来加密所有MongoDB的网络流量。TLS / SSL确保只有目标客户端才能读取MongoDB网络流量。
MongoDB的TLS / SSL加密仅允许对所有连接使用最小长度为128位密钥长度的强TLS / SSL密码。
前向保密密码套件会创建一个临时会话密钥,该会话密钥受服务器的私钥保护,但永远不会传输。临时密钥的使用可确保即使服务器的私钥被泄露,您也无法使用该泄露的密钥解密过去的会话。
MongoDB支持使用临时Diffie-Hellman(DHE)和临时椭圆曲线Diffie-Hellman(ECDHE)算法的前向保密密码套件。
<> | 从4.2版开始
从3.6.14和4.0.3开始
注意 如果启用了对ECDHE的支持,那么如果未明确启用临时Diffie-Hellman(DHE),则MongoDB 4.2+会尝试启用对临时Diffie-Hellman(DHE)的支持。有关详细信息,请参见临时Diffie-Hellman(DHE)。 |
Windows | 从4.0版开始,通过使用本机Windows TLS / SSL库Secure Channel(Schannel)隐式支持临时椭圆曲线Diffie-Hellman(ECDHE)。 |
macOs | 从版本4.0开始,通过使用本机macOS TLS / SSL库Secure Transport隐式支持临时椭圆曲线Diffie-Hellman(ECDHE)。 |
ECDHE密码套件比静态RSA密码套件慢。为了使ECDHE获得更好的性能,您可以使用使用椭圆曲线数字签名算法(ECDSA
)的证书。另请参阅
转发保密性能以获取更多信息
<> | 从版本4.2开始:MongoDB启用对临时Diffie-Hellman(DHE)的支持:
对于3.6和4.0版本,MongoDB启用了对临时Diffie-Hellman(DHE)的支持:
|
Windows | 从版本4.0开始,通过使用本机Windows TLS / SSL库安全通道(Schannel)隐式支持临时Diffie-Hellman(DHE)。 |
macOs | 从版本4.0开始,通过使用本机macOS TLS / SSL库Secure Transport隐式支持Ephemeral Diffie-Hellman(DHE)。 |
注意
如果客户端与DHE协商密码套件,但不能接受服务器选择的参数,则TLS连接失败。
除非已从Oracle购买了扩展支持,否则Java 6和7不支持强参数(即,大小大于1024)。但是,Java 7支持并喜欢ECDHE,因此将协商ECDHE(如果有)。
DHE(和ECDHE)密码套件的性能比静态RSA密码套件慢,而DHE则比ECDHE慢得多。有关更多信息,请参见 转发保密性能。
DHE和ECDHE密码套件比静态RSA密码套件慢,而DHE则比ECDHE慢得多。
为了使ECDHE获得更好的性能,您可以使用使用椭圆曲线数字签名算法(ECDSA
)的证书。另外,您可以使用opensslCipherConfig
参数禁用ECDHE密码套件,
如以下示例所示(这也会禁用DHE)
如果由于性能需要禁用对DHE密码套件的支持,则可以使用该opensslCipherConfig
参数,如以下示例所示:
要将TLS / SSL与MongoDB结合使用,您必须具有TLS / SSL证书作为
PEM
文件,它们是串联的证书容器。
MongoDB可以使用证书颁发机构或自签名证书颁发的任何有效TLS / SSL证书。如果使用自签名证书,尽管将对通信通道进行加密,但不会验证服务器身份。尽管这种情况可以防止窃听连接,但使您容易受到中间人攻击。使用由受信任的证书颁发机构签名的证书将允许MongoDB驱动程序验证服务器的身份。
例如,请参阅客户端的TLS / SSL配置。
企业功能
仅在MongoDB Enterprise中可用。
联邦信息处理标准(FIPS)是美国政府的计算机安全标准,用于认证安全加密和解密数据的软件模块和库。您可以将MongoDB配置为与FIPS 140-2认证的OpenSSL库一起运行。将FIPS配置为默认运行或根据需要从命令行运行。
有关示例,请参阅为FIPS配置MongoDB。