文档菜单
文档首页
/
MongoDB 手册
/ /

TLS/SSL (传输加密)

本页内容

  • TLS/SSL
  • TLS/SSL 加密套件
  • 证书
  • 身份验证
  • FIPS 模式

MongoDB 支持使用 TLS/SSL(传输层安全/安全套接字层)加密 MongoDB 的所有网络流量。TLS/SSL 确保 MongoDB 的网络流量只能被预期的客户端读取。

从 MongoDB 7.0 和 6.0.7 开始,MongoDB 支持以下操作系统上的 OpenSSL 3.0 和 OpenSSL FIPS 提供商:

  • 红帽企业 Linux 9

  • 亚马逊 Linux 2023

  • Ubuntu Linux 22.04

从 MongoDB 8.0 开始,MongoDB 支持 Amazon Linux 2023.3 上的 OpenSSL 3.0 和 OpenSSL FIPS 提供商。

MongoDB在 TLS 1.1+ 可用的系统上禁用了 TLS 1.0 加密的支持。

MongoDB 使用本机 TLS/SSL 操作系统库

平台
TLS/SSL 库
Windows
安全通道 (Schannel)
Linux/BSD
OpenSSL
macOS
安全传输

MongoDB 的 TLS/SSL 加密仅允许使用强 TLS/SSL 加密算法,所有连接的最小密钥长度为 128 位。

前向安全密钥套件创建一个临时会话密钥,该密钥由服务器的私钥保护,但永远不会被传输。使用临时密钥可以确保即使服务器的私钥被泄露,也无法使用泄露的密钥解密过去会话。

MongoDB支持使用临时Diffie-Hellman(DHE)和临时椭圆曲线Diffie-Hellman(ECDHE)算法的前向安全密钥套件。

平台
支持级别
Linux

如果Linux平台的OpenSSL支持自动曲线选择,MongoDB将启用对临时椭圆曲线Diffie-Hellman(ECDHE)的支持。

否则,如果Linux平台的OpenSSL不支持自动曲线选择,MongoDB将尝试使用prime256v1作为命名曲线来启用ECDHE支持。

Windows
通过使用安全通道(Schannel),Windows的本地TLS/SSL库,隐式支持临时椭圆曲线Diffie-Hellman(ECDHE)。
macOS
通过使用安全传输,macOS的本地TLS/SSL库,隐式支持临时椭圆曲线Diffie-Hellman(ECDHE)。

ECDHE密钥套件比静态RSA密钥套件慢。为了获得更好的ECDHE性能,您可以使用使用椭圆曲线数字签名算法(ECDSA)的证书。有关更多信息,请参阅前向安全性能

平台
支持级别
Linux

MongoDB启用对临时Diffie-Hellman(DHE)的支持

  • 如果opensslDiffieHellmanParameters在启动时设置(无论ECDHE是否启用或禁用)。

  • 否则,如果opensslDiffieHellmanParameters参数未设置,但如果ECDHE已启用,MongoDB将使用ffdhe3072参数启用DHE,该参数在RFC-7919#appendix-A.2.中定义。

Windows
通过使用安全通道(Schannel),Windows的本地TLS/SSL库隐式支持临时Diffie-Hellman(DHE)。
macOS
通过使用安全传输,macOS的本地TLS/SSL库隐式支持临时Diffie-Hellman(DHE)。

注意

如果客户端与DHE协商了加密套件,但不能接受服务器选择的参数,则TLS连接失败。

Java 6和7不支持强参数(即大小大于1024),除非从Oracle购买了扩展支持。但是,Java 7支持并优先使用ECDHE,因此如果可用,将协商ECDHE。

DHE(和ECDHE)加密套件的性能比静态RSA加密套件慢,其中DHE比ECDHE慢得多。有关更多信息,请参阅前向保密性能

DHE和ECDHE加密套件比静态RSA加密套件慢,其中DHE比ECDHE慢得多。

为了提高ECDHE的性能,您可以使用使用椭圆曲线数字签名算法(ECDSA)的证书。或者,您可以使用opensslCipherConfig参数禁用ECDHE加密套件,如下例所示(这也会禁用DHE)

mongod --setParameter opensslCipherConfig='HIGH:!EXPORT:!aNULL:!kECDHE:!ECDHE:!DHE:!kDHE@STRENGTH'

如果您需要因为性能原因禁用DHE加密套件支持,您可以使用opensslCipherConfig参数,如下例所示

mongod --setParameter opensslCipherConfig='HIGH:!EXPORT:!aNULL:!DHE:!kDHE@STRENGTH'

要使用TLS/SSL与MongoDB通信,您必须拥有TLS/SSL证书,这些证书作为PEM文件,是证书的连接容器。

MongoDB可以使用由证书颁发机构签发的任何有效TLS/SSL证书或自签名证书。对于生产使用,您的MongoDB部署应使用由同一证书颁发机构生成和签名的有效证书。您可以生成并维护一个独立的证书颁发机构,或者使用第三方TLS/SSL供应商生成的证书。

使用由受信任的证书颁发机构签名的证书,允许MongoDB驱动程序验证服务器的身份。

例如,请参阅客户端TLS/SSL配置。

mongod / mongos在连接时会在日志中记录警告,如果提供的x.509证书在30天内过期。

从 MongoDB 6.0 开始,如果在初始同步期间将 ocspEnabled 设置为 true,则所有节点必须能够访问 OCSP 响应者。

如果成员处于 STARTUP2 状态失败,请将 tlsOCSPVerifyTimeoutSecs 设置为一个小于 5 的值。

为了检查证书吊销,MongoDB 默认启用 OCSP(在线证书状态协议)的使用。使用 OCSP 消除了定期下载 证书吊销列表(CRL) 并重新启动 mongod / mongos 以更新 CRL 的需要。

作为其 OCSP 支持的一部分,MongoDB 在 Linux 上支持以下功能

  • OCSP stapling。通过 OCSP stapling,mongodmongos 实例在提供这些证书进行 TLS/SSL 握手时,将 OCSP 状态响应附加到它们的证书中或“粘贴”到它们的证书中。通过在证书中包含 OCSP 状态响应,OCSP stapling 消除了客户端需要单独请求以检索提供证书的 OCSP 状态的需要。

  • OCSP必须粘贴扩展. OCSP必须粘贴扩展是一种可以添加到服务器证书的扩展,告诉客户端在TLS/SSL握手期间接收到证书时预期OCSP粘贴。

MongoDB还提供了以下与OCSP相关的参数

参数
描述
启用或禁用OCSP支持。
指定在刷新粘贴的OCSP状态响应之前等待的秒数。
指定mongod / mongos实例等待接收其证书的OCSP状态响应的最大秒数。
指定mongod / mongos在验证客户端证书时等待OCSP响应的最大秒数。

您可以使用setParameter配置文件设置或--setParameter命令行选项在启动时设置这些参数。

注意

从MongoDB 5.0开始,rotateCertificates命令和db.rotateCertificates()方法也将刷新任何粘贴的OCSP响应。

除了加密连接外,TLS/SSL 还允许使用证书进行身份验证,包括客户端身份验证以及副本集和分片集群成员的内部身份验证

更多信息,请参阅

注意

企业功能

仅在 MongoDB 企业版中可用。

联邦信息处理标准(FIPS)是美国政府计算机安全标准,用于认证加密和解密数据的软件模块和库。您可以配置 MongoDB 使用 FIPS 140-2 认证的 OpenSSL 库运行。可以通过命令行默认配置或按需配置 FIPS 运行。

例如,请参阅为 FIPS 配置 MongoDB。

返回

旋转密钥

© . All rights reserved.