定义
版本 5.0 中的新增功能。
- db.rotateCertificates(message)
- 将当前使用的 TLS 证书轮换为 - mongod或- mongos,以使用配置文件中定义的这些证书的更新值。- db.rotateCertificates(message) - db.rotateCertificates()方法接受以下可选参数:Parameter类型说明- message- 字符串 - 可选服务器记录到日志文件和审核文件中的消息。 - db.rotateCertificates()方法封装了- rotateCertificates命令。
兼容性
此方法可用于以下环境中托管的部署:
重要
MongoDB Atlas集群不支持此命令。 有关Atlas支持所有命令的信息,请参阅不支持的命令。
- MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本 
- MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本 
注意
Atlas会自动轮换证书。使用Atlas时,无需运行rotateCertificates 命令。仅当您想手动轮换证书时才使用 rotateCertificates 命令。
输出
db.rotateCertificates()方法返回包含以下字段的文档:
| 字段 | 类型 | 说明 | 
|---|---|---|
| 
 | bool | 包含命令的执行状态。 成功则为 | 
行为
轮换包括以下证书:
- CRL (Certificate Revocation List) files(在 Linux 和 Windows 平台上)
轮换一个或多个证书:
- 替换您要在文件系统中轮换的证书,并注意以下限制: - 每个新证书的文件名和文件路径必须与被替换的证书相同。 
- 如果轮换加密的 - TLS Certificate,其密码必须与旧证书的密码相同(如- certificateKeyFilePassword配置文件设置所指定)。证书轮换不支持交互式密码提示。
 
- 运行 - db.rotateCertificates()以轮换- mongod或- mongos实例使用的证书。
当证书轮换发生时:
如果您已为部署配置OCSP ,则db.rotateCertificates()方法还会在轮换期间获取装订的 OCSP 响应。
无论复制状态如何, db.rotateCertificates()方法都可以在正在运行的mongod或mongos上运行。
db.rotateCertificates()rotateCertificates每个mongod 或 进程上每次只能运行一个mongos 或 实例。在一个实例已经运行时尝试启动第二个实例将导致错误。
证书文件错误、过期、撤销或丢失会导致证书轮换失败,但不会导致现有 TLS 配置失效或终止正在运行的 mongod 或 mongos 进程。
如果mongod或mongos在--tlsCertificateSelector设置为thumbprint的情况下运行, db.rotateCertificates()将失败并向日志文件写入一条警告消息。
日志记录
成功轮换后,主题名称、指纹以及服务器和集群证书指纹的有效期都会记录到配置的日志目标中。 如果已启用审核,此信息也会写入审核日志。
在 Linux 和 Windows 平台上,如果存在CRL file ,其指纹和有效期也会记录到这些位置。
必需的访问权限
您必须执行rotateCertificates操作才能使用db.rotateCertificates()方法。 rotateCertificates操作是hostManager角色的一部分。
例子
对配置文件进行适当更新以指定更新的证书信息后,以下操作将在运行中的mongod实例上轮换证书:
db.rotateCertificates() 
以下操作的执行与上述操作相同,但还会在轮换时将自定义日志消息写入日志文件和审核文件:
db.rotateCertificates("message": "Rotating certificates")