在使用Mongo Shell连接数据库时,您可以启用SSL(Secure Sockets Layer)加密功能提高数据链路的安全性。通过SSL加密功能可以在传输层对网络连接进行加密,在提升通信数据安全性的同时,保障数据的完整性。

前提条件

  • 实例类型为副本集实例,且数据库版本为3.4、4.0或4.2版本
    说明 如果版本过低,您可以升级数据库版本
  • 实例已开启SSL加密功能,详情请参见设置SSL加密
  • 待连接数据库的本地服务器或ECS实例上已安装3.0及以上版本的Mongo Shell。安装步骤请参见Install MongoDB
  • 待连接数据库的本地服务器或ECS实例的IP地址已加入到MongoDB实例的白名单中,详情请参见设置白名单及安全组

注意事项

由于SSL加密的固有缺陷,启用SSL加密会显著增加CPU使用率,建议在有加密需求时才开通SSL加密(例如通过公网连接MongoDB实例)。
说明 内网链路相对较安全,一般无需对链路加密。

操作步骤

本案例以Linux操作系统为例演示具体操作流程。

  1. 下载SSL CA证书,详情请参见设置SSL加密
  2. 将解压后的证书文件上传至安装有Mongo Shell的本地服务器或ECS实例中。
    说明 本案例中,将.pem证书文件上传至本地服务器的/root/sslcafile/目录中。
  3. 在安装有Mongo Shell的本地服务器或ECS实例中,执行以下命令连接MongoDB数据库。
    mongo --host <host> -u <username> -p --authenticationDatabase <database> --ssl --sslCAFile <sslCAFile_path> --sslAllowInvalidHostnames
    说明
    • <host>:Primary节点或Secondary节点的连接地址(含端口号),详情请参见副本集实例连接说明
      • 如需通过公网连接数据库,需要申请公网连接地址,详情请参见申请公网连接地址
      • 如需通过内网地址连接数据库,需要确保ECS实例与MongoDB实例的网络类型相同(如果是专有网络,需要在同一VPC中)。
    • <username>:MongoDB实例的数据库账号,初始账号为root。不建议在生产环境中直接使用root账号连接数据库。您可以根据业务需求创建用户并分配权限,详情请参见使用DMS管理MongoDB数据库用户
    • <database>:鉴权数据库名,即数据库账号所属的数据库。当数据库账号为root时,对应的数据库为admin。
    • <sslCAFile_path>:SSL证书文件路径。
    示例:
    mongo --host dds-bpxxxxxxxx-pub.mongodb.rds.aliyuncs.com:3717 -u root -p --authenticationDatabase admin --ssl --sslCAFile /root/sslcafile/ApsaraDB-CA-Chain.pem  --sslAllowInvalidHostnames
  4. 当命令行提示Enter password:时,输入数据库账号对应的密码并按回车键确认。
    说明
    • 输入密码时,密码字符是不可见的。
    • 如果忘记了root账号的密码,您可以通过设置密码的方式来重置密码。

常见的连接场景