(4.22)Microsoft 管理控制台启用 SSL 加密的 SQL Server 实例
如何通过使用 Microsoft 管理控制台启用 SSL 加密的 SQL Server 实例
关键词:MSSQL加密,sql server加密,sql server客户端与服务器传输内容加密
转自:https://support.microsoft.com/zh-cn/help/316898/how-to-enable-ssl-encryption-for-an-instance-of-sql-server-by-using-mi
客户端与服务器建立连接的过程默认是加密的;
问:MS SQL 服务器端配置好了强制加密协议,为什么客户端不勾选"加密连接”依然能连?
客户端和服务端并不需要同时配置,任意一端要求加密,则数据传输都会加密,可以用 network monitor 抓包确认,如果没有加密,则可以在这个里面从 TDS 包看到明文数据
重要提示:本文章是 Microsoft 软件自动翻译的结果,而非专业译者翻译的结果。 Microsoft 提供专业人员翻译的文章、由自动翻译生成的文章以及来自 Microsoft 社区的文章翻译,因此你能够以自己的语言阅读所有知识库文章。 需要注意的是,由自动翻译生成的文章(包括 Microsoft 社区审阅的文章)可能包含词汇、句法或语法错误。 对于因不正确的内容翻译或使用不正确的内容翻译而造成的不准确或错误或任何损害,Microsoft 概不负责。
查看原始英文文章:316898
概要
注意:此方法不能用于将证书放在群集 SQL Server 的服务器上。为群集实例,请参见方法在"启用证书用于 SSL 在群集 SQL Server 安装,"文中所述这篇文章。
如果您的公司实现企业证书颁发机构时,可以申请证书的独立 SQL Server 的服务器,然后使用安全套接字层 (SSL) 加密的证书。
您可以启用强制协议加密选项在服务器或客户端上。
注意:若要在服务器上,启用强制协议加密,使用服务器网络实用程序或 SQL Server 配置管理器,具体取决于的 SQL Server 版本。若要在客户端上启用强制协议加密,使用客户端网络实用程序或 SQL Server 配置管理器。
重要:如果您通过使用客户端网络实用工具 (对于 SQL Server 2000年客户端) 或 SQL 本机客户端< 版本 >配置 (32 位) 或 SQL 本机客户端启用 SSL 加密< 版本 >配置页面中 SQL Server 配置管理器中,从该客户端的所有连接都请求 SSL 加密对客户端连接到任何 SQL Server。
如果您在服务器上启用强制协议加密,您必须在服务器上安装证书。
如果您想要在客户端上启用强制协议加密,您必须在服务器上有证书,则客户端必须更新信任服务器证书受信任的根颁发机构。
注意:如果您使用 SQL Server 使加密的连接的 SQL Server 实例,您可以设置ForceEncryption选项的值为是。有关详细信息,请参阅"启用加密连接到数据库引擎 (SQL Server 配置管理器)"SQL Server 联机丛书中:
在 Microsoft 管理控制台 (MMC) 的服务器上安装证书
若要使用 SSL 加密,您必须在服务器上安装证书。按照以下步骤安装通过使用 Microsoft 管理控制台 (MMC) 管理单元中的证书。
如何配置 mmc 管理单元
- 若要打开证书管理单元,请执行以下步骤:
- 若要打开 MMC 控制台中,单击开始,然后单击运行。在运行对话框中键入:
MMC
- 在控制台菜单上,单击添加/删除管理单元-...。
- 单击添加,然后单击证书。再次单击添加。
- 提示您打开管理单元的当前用户帐户的服务帐户或计算机帐户。选择计算机帐户。
- 选择本地计算机,然后单击完成。
- 单击关闭添加独立管理单元对话框中。
- 单击添加/删除管理单元对话框中的确定。您已安装的证书位于证书文件夹的个人的容器中。
- 若要打开 MMC 控制台中,单击开始,然后单击运行。在运行对话框中键入:
- 使用 MMC 管理单元中的服务器上安装证书:
- 单击左侧窗格中选择个人文件夹。
- 在右窗格中右键单击,指向所有任务,,然后单击申请新证书...。
- 证书申请向导对话框将打开。单击下一步。选择证书类型是"电脑"。
- 在好记的名称文本框中可以键入证书的友好名称或将文本框保留为空,并完成向导。完成向导后,您将看到使用完全合格的计算机的域名的文件夹中的证书。
- 如果您想要为特定客户端或客户端启用加密,请跳过此步骤并进入本文的启用对特定客户端的加密部分。
对于SQL Server 2000年中,要启用服务器上的加密,请打开服务器网络实用工具上的服务器证书已安装,然后单击以选中强制协议加密复选框。重新启动才能生效的加密 (SQL Server) MSSQLServer 服务。您的服务器现在就可以使用 SSL 加密。
对于SQL Server 2005 及更高版本,若要启用加密,在服务器上,打开 SQL Server 配置管理器,请执行下列操作:
- 在SQL Server 配置管理器中,展开SQL Server 网络配置、协议 < 服务器实例 >中,用鼠标右键单击,然后选择属性。
- 在证书选项卡上从证书下拉菜单中,选择所需的证书,然后单击确定。
- 在标志选项卡上,在ForceEncryption框中,选择是,然后单击确定以关闭该对话框。
- 重新启动 SQL Server 服务。
在群集 SQL Server 安装启用 SSL 证书
在下面的注册表项中指定 SQL Server 用于加密连接的证书:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.x\MSSQLServer\SuperSocketNetLib\Certificate
此项包含一个属性的证书称为标识服务器中的每个证书的指纹。在群集环境中,此注册表项将被设置为 Null 的即使正确的证书存储中存在。要解决此问题,必须采取下列额外的步骤,在每个群集节点上于每个节点安装证书之后):
- 导航到存储该 FQDN 证书的证书存储区。在属性页上的证书,请转到详细信息选项卡和证书的指纹值复制到记事本窗口。
- 删除在记事本的指纹值中的十六进制字符间的空格。
- 启动注册表编辑器,定位到以下注册表项,和第 2 步中复制的值:
HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\< 实例 >\MSSQLServer\SuperSocketNetLib\Certificate
- 如果 SQL 虚拟服务器当前位于此节点故障转移到另一个群集上的节点,然后重新启动注册表更改的位置的节点出现。
- 重复此过程的所有节点上。
此过程中的屏幕快照,请参见以下博客文章在 MSDN 上:
为特定的客户端启用加密
客户端请求 SSL 加密的客户端计算机必须信任该服务器证书和证书必须已经存在于服务器上。您必须使用 mmc 管理单元导出受信任的根证书颁发机构使用的服务器证书:
- 若要导出服务器证书的受信任根证书颁发机构 (CA),请执行以下步骤:
- 打开 MMC,然后在个人文件夹中查找您的证书。
- 用鼠标右键单击证书名称,然后单击打开。
- 查看证书路径选项卡,请注意顶部的大多数项目。
- 导航到受信任的根证书颁发机构文件夹,然后找到说明该证书颁发机构在步骤 c 中...
- 用鼠标右键单击CA,指向所有任务,然后单击导出。
- 选择所有默认设置,然后将导出的文件保存到硬盘中,客户端计算机访问该文件的位置。
- 请按照以下步骤导入客户端计算机上的证书:
- 通过使用 MMC 管理单元中,定位到客户端计算机,然后浏览到受信任的根证书颁发机构文件夹。
- 用鼠标右键单击受信任的根证书颁发机构文件夹,指向所有任务,然后单击导入。
- 浏览,然后选择您在步骤 1 中生成的证书 (.cer 文件)。选择默认设置以完成向导的其余部分。
- 使用 SQL Server 客户端网络实用程序。
- 单击以选中强制协议加密选项。您的客户端现在就可以使用 SSL 加密。
如何测试您的客户端连接
若要测试您的客户端连接,您可以:
- 使用 SQL 管理工作室。
-或者-
- 使用的任何 ODBC 或 OLEDB 应用程序可以在其中更改连接字符串。
SQL Server 管理 Studio
若要使用 SQL Server 管理 Studio 进行测试,请执行以下步骤:
- 定位到 SQL Server 配置管理器中的 SQL Server 客户端< 版本 >配置页。
- 在属性窗口中,将设置强制协议加密选项为"是"。
- 连接到服务器正在运行 SQL Server 通过使用 SQL Server 管理 Studio。
- 通过使用 Microsoft 网络监视器或网络嗅探器监视通信。
ODBC 或 OLEDB 应用程序连接字符串示例
如果使用 ODBC 或 OLEDB 连接字符串,如 SQL 本机客户端提供程序中的,添加加密关键字并将其设置为true ,在连接字符串中,然后监视通信使用一种工具,如 Microsoft网络监视器或网络嗅探器
故障排除
您已成功安装证书之后,在证书选项卡上的证书列表中没有出现证书。
注意:证书选项卡处于打开 SQL Server 配置管理器协议实例 < 名称 >属性对话框。
因为您可能已安装证书无效,将出现此问题。如果证书是无效的它将不会在证书选项卡上列出。要确定您安装的证书是否有效,请执行以下步骤:
- 打开证书管理单元。若要执行此操作,请参阅"如何配置 mmc 管理单元"部分中的步骤 1。
- 在证书管理单元中,展开个人,然后展开证书。
- 在右窗格中,找到您所安装的证书。
- 确定证书是否满足以下要求:
- 在右窗格中,为该证书预期目的列中的值必须是服务器身份验证。
- 在右窗格中,颁发给列中的值必须是服务器的名称。
- 双击该证书,然后再确定证书是否满足以下要求:
- 在常规选项卡中,您将收到以下消息:
您有一个与该证书对应的私钥。
- 在详细信息选项卡上的主题字段的值必须是服务器名称。
- 增强型密钥用法字段的值必须是服务器身份验证 (< 数量 >)。
- 在证书路径选项卡上的服务器名称必须出现在证书路径下。
- 在常规选项卡中,您将收到以下消息:
如果不满足这些要求的任何一个,则该证书是无效的。
详细信息
(4.22)Microsoft 管理控制台启用 SSL 加密的 SQL Server 实例的更多相关文章
- 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接
由于项目中必须得用JDK6来作为Java环境,于是连接SQLServer时出现了com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安 ...
- JDBC连接数据库遇到的“驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。
要从旧算法列表中删除3DES: 在JDK 8及更早版本中,编辑该 /lib/security/java.security文件并3DES_EDE_CBC从jdk.tls.legacyAlgorithms ...
- 在Windows Server 2008 R2 Server中,连接其他服务器的数据库遇到“未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持。如果希望使用通知,请为此数据库启用 Service Broker ”
项目代码和数据库部署在不同的Windows Server 2008 R2 Server中,错误日志显示如下: "未启用当前数据库的 SQL Server Service Broker,因此查 ...
- SQL问题:未启用当前数据库的 SQL Server Service Broker
数据库分离后,附加回到数据库,然后在程序中打开调用数据库的页面,出现如下问题:“未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持.如果希望使用通知,请为此数 ...
- 下载 Microsoft JDBC driver 7.2 for SQL Server
下载 Microsoft JDBC driver 7.2 for SQL Server:https://www.microsoft.com/zh-cn/download/confirmation.as ...
- 未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持。如果希望使用通知,请为此数据库启用 Service Broker
昨晚遇到的这个问题,也知道Notifications service依赖底层的Service broker的.本以为只需要执行以下脚本对数据库启用Service broker即可. alter dat ...
- 基于32位Windows2003的数据库服务器优化,启用AWE,优化SQL Server
最近几天,笔者所在的单位中的一台WEB服务器由于负载过大出现了问题,当同时在线的用户达到一定规模(2000-3000)时,频繁出现页面响应迟缓.超时等问题.服务器采用的操作系统是Windows Ser ...
- 解决“未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持。如果希望使用通知,请为此数据库启用 Service Broker”错误
转自:http://blog.csdn.net/andrew_wx/article/details/6947317 解决办法: ALTER DATABASE 数据库名称 SET NEW_BROKER ...
- 错误:未启用当前数据库的SQL Server Service Broker,因此查询通知不受支持。如果希望使用通知,请为此数据库启用 Service Broker。
解决方法: 打开SQL Server,新建查询: ALTER DATABASE 数据库名 SET NEW_BROKER WITH ROLLBACK IMMEDIATE;ALTER DATABASE 数 ...
随机推荐
- react获取当前页面的url参数
react获取当前页面的url参数,必须在url路由对应的组件上获取,在子组件上获取不到,为undefined,获取形如 /news/:id 的后面的参数 id this.props.match. ...
- 【SQLSERVER】How to check current pool size
SELECT des.program_name , des.login_name , des.host_name , COUNT(des.session_id) [Connections] FROM ...
- JAVA程序员_常用英语
干程序员这行实在是离不开英语,干程序员是一项很辛苦的工作,要成为一个高水平的程序员尤为艰难.这是因为计算机软件技术更新的速度越来越快,而这些技术大多来源于英语国家,我们在引进这些技术时往往受到语言障碍 ...
- 父页面操作嵌套iframe子页面的HTML标签元素
一个页面A.html使用iframe嵌套一个页面B.html,在A页面写js操作B页面HTML元素,首先要获取到B页面document对象,才能对嵌套页面进行操作 请看一个实例,在A页面写js操作B页 ...
- 【ArcGIS】栅格分析-问题之001(转)
在arcgis中进行栅格计算时,碰到这样的错误ERROR 000539:Error running expression:rcexec()<type 'exceptions.ValueError ...
- iOS SQLite 数据库迁移
本文转载至 http://www.jianshu.com/p/c19dd08697bd 最近不得不考虑关于数据库迁移的问题,原先用了种很不好的处理方式(每次版本升级就删除本地数据库,太傻),于是开始考 ...
- HTML head 头标签(转)
HTML head 头部分的标签.元素有很多,涉及到浏览器对网页的渲染,SEO 等等,而各个浏览器内核以及各个国内浏览器厂商都有些自己的标签元素,这就造成了很多差异性.移动互联网时代,head 头部结 ...
- 一、K3 Wise 实施指导《K3 Wise实施手册》
1.总账期间启用后无法修改.固定资产期间启用后无法修改 ----修改总账 ' where fcategory='GL' and Fkey='startyear' --修改启用期间 ' where fc ...
- 转载:浅谈 Scala 中下划线的用途
Scala 作为一门函数式编程语言,对习惯了指令式编程语言的同学来说,会不大习惯,这里除了思维方式之外,还有语法层面的,比如 underscore(下划线)就会出现在多种场合,令初学者相当疑惑,今天就 ...
- linux如何查看某个端口是否开放
1.你可以使用 lsof 命令来查看某一端口是否开放.查看端口可以这样来使用,我就以80端口为例: lsof -i:80 或者 lsof -i:22如果有显示说明已经开放了,如果没有显示说明没有开放 ...