详细介绍:SQL Server 数据库 的通信加密配置SSL安全连接

目录

1. 为RDS SQL Server开启SSL加密、设置保护地址

2. 下载SSL CA证书

3. 配置SSL CA证书

3.1 导入证书

3.2 SSMS配置

附录:通过SSL连接数据库示例代码


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的身份,避免中间人攻击。

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

  2. 在左侧菜单栏中单击数据安全性。

  3. 在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 导入证书

  1. 在桌面左下角搜索框中输入certmgr.msc并打开。

  2. 在certmgr对话框中,鼠标右击受信任的根证书颁发机构。

  3. 选择所有任务 > 导入。

4.单击下一步。

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

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

7.单击完成等待证书导入。

3.2 SSMS配置

  1. 打开SQL Server Management Studio,单击对话框右下角选项按钮。

    image.png

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

    image.png

3. 执行如下查询,若查询结果为TRUE,则说明连接已加密。

SELECT ENCRYPT_OPTION FROM SYS.DM_EXEC_CONNECTIONS WHERE SESSION_ID = @@SPID

附录:通过SSL连接数据库示例代码

C#示例:

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示例

# -*- 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()

posted @ 2026-02-03 13:51  yangykaifa  阅读(156)  评论(0)    收藏  举报