目录
[1. 为RDS SQL Server开启SSL加密、设置保护地址](#1. 为RDS SQL Server开启SSL加密、设置保护地址)
[2. 下载SSL CA证书](#2. 下载SSL CA证书)
[3. 配置SSL CA证书](#3. 配置SSL CA证书)
[3.1 导入证书](#3.1 导入证书)
[3.2 SSMS配置](#3.2 SSMS配置)
1. 为RDS SQL Server开启SSL加密、设置保护地址

|---------------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 参数 | 是否必选 | 说明 |
| 请选择受保护地址: | 是 | 选择要开通SSL加密的链路。支持加密内网链路和外网链路,但仅允许加密一条链路。 说明 选择加密外网链路时,需确保实例已开通外网地址。 |
| 是否开启强制加密 | 否 | 开启后将强制客户端以加密方式连接SQL Server内外网链路,且连接无需上传CA证书,不再支持非加密连接方式。 说明 仅实例网络类型为专有网络(VPC)时,才支持开启强制加密。 |
| 支持最低TLS版本 | 否 | 选择支持的最低TLS版本,当前支持TLS版本为1.0、1.1和1.2,低于该版本将被拒绝连接。 例如,选择TLS 1.1,则表示服务端仅接受TLS 1.1和1.2协议版本的客户端连接请求,通过TLS 1.0建立连接的客户端会被拒绝连接。 |
2. 下载SSL CA证书
如果不使用CA证书,您也可以通过SSL加密连接RDS SQL Server。但建议您下载并使用CA证书,它可以在SSL握手阶段验证收到的服务器证书,以确认RDS SQL Server的身份,避免中间人攻击。
-
访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
-
在左侧菜单栏中单击数据安全性。
-
在SSL 页签下,单击下载CA证书。
下载的文件为压缩包,包含如下三个文件:
-
p7b文件:用于Windows系统中导入CA证书。
-
PEM文件:用于其他系统或应用中导入CA证书。
-
JKS文件:Java中的truststore证书存储文件,密码统一为apsaradb,用于Java程序中导入CA证书链。
-

3. 配置SSL CA证书
在RDS SQL Server实例中开启SSL加密后,应用端或客户端在连接实例时需要配置SSL CA证书。本文以Microsoft SQL Server Management Studio(SSMS)为例,介绍SSL CA证书安装方法。其它应用或者客户端请参见对应产品的使用说明。
3.1 导入证书
-
在桌面左下角搜索框中输入certmgr.msc并打开。
-
在certmgr 对话框中,鼠标右击受信任的根证书颁发机构。
-
选择所有任务 > 导入。

4.单击下一步。

- 在证书导入向导 页面中,单击浏览 导入已下载的SSL CA证书,并单击下一步。

- 选择证书存放位置后,单击下一步。

7.单击完成等待证书导入。
3.2 SSMS配置
-
打开SQL Server Management Studio,单击对话框右下角选项按钮。

-
在连接属性 选项卡中,勾选加密连接 和信任服务器证书 ,并单击连接按钮。

-
执行如下查询,若查询结果为TRUE,则说明连接已加密。
SELECT ENCRYPT_OPTION FROM SYS.DM_EXEC_CONNECTIONS WHERE SESSION_ID = @@SPID
附录:通过SSL连接数据库示例代码
C#示例:
cs
using System;
using System.Data.SqlClient;
namespace SqlConnectionSSLExample
{
class Program
{
static void Main(string[] args)
{
// 建立连接
// Data Source指定目标SQL Server数据库服务器的地址;Initial Catalog指定连接的目标数据库名称;User ID指定连接数据库所需的用户名;Password指定连接数据库所需的密码;Encrypt指定是否启用SSL加密传输,值为true表示启用。
string connectionString = "Data Source=rm-2ze********.sqlserver.rds.aliyuncs.com;Initial Catalog=master;User ID=zhttest;Password=zht****;Encrypt=true;";
using (SqlConnection connection = new SqlConnection(connectionString))
{
// 打开连接
connection.Open();
try
{
// 执行SQL查询
SqlCommand cmd = new SqlCommand("SELECT @@version", connection);
string result = cmd.ExecuteScalar().ToString();
Console.WriteLine(result);
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
}
}
Python示例
python
# -*- coding:utf-8 -*-
import ssl
import pyodbc
# 创建一个SSL上下文,用于在Python中建立安全的SSL连接
context = ssl.create_default_context(purpose=ssl.Purpose.SERVER_AUTH, cafile="D:\ca\ApsaraDB-CA-Chain.pem")
# 建立连接
# SERVER指定目标数据库服务器的地址;DATABASE指定连接的数据库名称;UID指定登录数据库所需的用户名;PWD指定登录数据库所需的密码;Encrypt指定是否启用SSL加密,值为yes表示启用。
conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER=rm-2zec********.sqlserver.rds.aliyuncs.com;DATABASE=master;UID=zhttest;PWD=zht****;Encrypt=yes', ssl=context)
cursor = conn.cursor()
cursor.execute('SELECT @@version')
rows = cursor.fetchall()
for row in rows:
print(row)
# 关闭连接
conn.close()