在使用Mongo Shell连接数据库时,您可以启用SSL(Secure Sockets Layer)加密功能提高数据链路的安全性。通过SSL加密功能可以在传输层对网络连接进行加密,在提升通信数据安全性的同时,保障数据的完整性。
前提条件
实例类型为副本集实例或云盘版分片集群实例。
说明如果版本过低,您可以升级数据库大版本。
实例已开启SSL加密功能,详情请参见设置SSL加密。
待连接数据库的本地服务器或ECS实例上已安装3.0及以上版本的Mongo Shell。安装步骤请参见Install MongoDB。
待连接数据库的本地服务器或ECS实例的IP地址已加入到MongoDB实例的白名单中,详情请参见修改白名单。
注意事项
由于SSL加密的固有缺陷,启用SSL加密会显著增加CPU使用率,建议在有加密需求时才开通SSL加密(例如通过公网连接MongoDB实例)。
说明内网链路相对较安全,一般无需对链路加密。
实例开通SSL加密后,如果修改了实例的连接地址或申请了新的连接地址(包括新的节点连接地址和公网地址),新地址将无法使用SSL加密连接。如果想要新地址也使用SSL加密连接,您需要更新服务器证书。
操作步骤
本案例以Linux操作系统为例演示具体操作流程。
下载SSL CA证书,详情请参见设置SSL加密。
将解压后的证书文件上传至安装有Mongo Shell的本地服务器或ECS实例中。
说明本案例中,将.pem证书文件上传至本地服务器的/test/sslcafile/目录中。
在安装有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账号连接数据库。您可以根据业务需求创建用户并分配权限,详情请参见MongoDB数据库账号权限管理。<database>
:鉴权数据库名,即数据库账号所属的数据库。当数据库账号为root时,对应的数据库为admin。<sslCAFile_path>
:SSL证书文件路径。--sslAllowInvalidHostnames
:表示禁用TLS或SSL证书中的主机名验证,允许连接到主机名不匹配的服务器。如果SSL加密要求主机名验证,则不要添加该参数配置。
示例:
数据库账号为test,所属数据库为admin。
mongo --host dds-bp19f409d7512****-pub.mongodb.rds.aliyuncs.com:3717 -u test -p --authenticationDatabase admin --ssl --sslCAFile /test/sslcafile/ApsaraDB-CA-Chain.pem --sslAllowInvalidHostnames
当命令行提示
Enter password:
时,请输入数据库账号对应的密码并按回车键确认。说明输入密码时,密码字符是不可见的。
如果忘记了root账号的密码,您可以通过设置密码的方式来重置密码。