SQL Server 数据库 的通信加密配置SSL安全连接

目录

[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配置)

附录:通过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.单击下一步

  1. 证书导入向导 页面中,单击浏览 导入已下载的SSL CA证书,并单击下一步
  1. 选择证书存放位置后,单击下一步

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

3.2 SSMS配置

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

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

  3. 执行如下查询,若查询结果为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()
相关推荐
卿雪1 小时前
Redis 数据过期删除和内存淘汰策略
数据库·redis·缓存
by__csdn2 小时前
第一章 (ASP.NET Core入门)第二节( 认识ASP.NET Core)
数据库·后端·c#·asp.net·.net·.netcore·f#
他是龙5512 小时前
第31天:WebPack 与 jQuery 安全
安全·webpack·jquery
爬山算法2 小时前
Redis(170)如何使用Redis实现分布式限流?
数据库·redis·分布式
芯盾时代2 小时前
“两重“之 经济安全
网络·安全·信息安全·数据安全
JavaBoy_XJ2 小时前
Redis在 Spring Boot 项目中的完整配置指南
数据库·spring boot·redis·redis配置
KG_LLM图谱增强大模型2 小时前
SciDaSynth:基于大语言模型的科学文献交互式结构化数据提取系统
数据库·人工智能·大模型·知识图谱
凌盛羽2 小时前
用Python非常流行的openpyxl库对Excel(.xlsx格式)文件进行创建、读取、写入、显示等操作
数据库·python·链表·excel
Sahadev_2 小时前
GitHub 一周热门项目速览 | 2025年12月08日
java·大数据·人工智能·安全·ai作画