[How To]如何给SQL Server配置证书

http://blogs.msdn.com/b/apgcdsd/archive/2011/01/20/how-to-sql-server.aspx


默认情况下从SQL Server 2005开始SQL Server会使用自动生成的证书来加密与客户的连接和数据包传输。你也可以给SQL Server配置你自己的证书来实现更高的安全性。

 

证书从哪里获得


你可以从第三方的证书颁发机构获得证书。你也可以选择使用工具制作自签名的证书用作测试的用途,或者你可以从你企业内部的证书的服务器来申请证书用作企业内部使用。

要制作自签名的证书,你可以使用IIS 6.0 Resource Kit中的SelfSSL工具(如果你的机器上有安装IIS的话)。在命令行中,输入以下命令:

selfssl.exe /N:CN=<FQDN> /K:1024 /V:7 /S:1 /P:442 /T

注意你需要将<FQDN>替换成你SQL Server服务器主机的实际FQDN。然后你会被询问“Do you want to replace the SSL settings for site 1 (Y/N)”。输入”Y”。这样证书就会被自动安装到本机的Certificate store中去。

如果你的机器上没安装IIS的话,你可以使用.NET SDK中的makecert工具来制作自签名的证书。大致方法如下:

1.使用makecert工具来生成pvk和cer文件。

makecert -r -pe -sv c:\test.pvk -n "CN=<FQDN>" -b 01/01/2000 -e 01/01/2036 -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localMachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 c:\test.cer

2.使用pvk2pfx工具生成pfx文件。

pvk2pfx.exe -pvk c:\test.pvk -spc c:\test.cer -pfx c:\test.pfx -po <password>

请注意你仍需要将<FQDN>替换成你SQL Server服务器主机的实际FQDN,<password>也要更换成实际的密码。得到证书后,你需要将证书安装到certificate store(根据SQL Sever的启动账号决定是local computer或current user store)的personal以及"Trusted Root Certification Authorities"目录下。

如果你的企业内部有证书服务器的话,你也可以从那里来申请证书。这里我用Windows Server自带的Certificate Authority(CA)为例。

1.       访问CA的网站来申请证书。申请时,name部分要填写SQL Server主机的FQDN,Type of Certificate Needed需要选择Server Authentication Certificate。Key Options要选exchange或者Both。如果你需要证书可以被重复导入导出,要勾选"Mark keys as exportable"。你也可以勾选"Store certificate in the local computer certificate store",这样你在下载证书的时候就可以直接安装到本机的certificate  store里去了。

 

  

 

2.       等到证书被核发之后,你就可以通过CA的网站来下载证书了。同样的,也需要将证书安装到Certificate store的personal以及"Trusted Root Certification Authorities"目录下。

 

 

 

证书的配置


我们先来了解下SQL Server装载证书的步骤。

1.       SQL Server 搜索HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib\Certificate。通过Certificate键值中记录的证书的thumbprint来到certificate store中寻找相应的证书。如果找不到该证书,则SQL Server启动失败。

2.       如果Certificate键值为空,则SQL Server到certificate store中去寻找subject CN与SQL Server服务器主机的FQDN相同的证书。如果有这样的证书存在,SQL Server就读取第一个它找到的证书,装载并启动。

3.       如果还是找不到证书,则SQL Server就自动生成一个证书并使用这个证书启动。

有人可能是通过SQL Server configuration manager来选择证书并将它配置给SQL Server的。其实SQL Server configuration manager也是通过写Certificate键值来达到配置证书的目的。另外要注意的是SQL Server configuration manager中的下拉列表只能显示那些subject CN与SQL Server服务器主机的FQDN相同的证书。因此如果你需要配置一个CN与SQL Server服务器主机的FQDN不同的证书的话(除非是cluster环境,否则不推荐这样做,可能导致客户端连接问题),就需要使用手动修改Certificate键值的方法。

其次,如果不指定Certificate键值的话,则SQL Server自动搜索Certificate store中符合要求的证书。此时如果存在多个证书的话,我们是无法控制SQL Server选择哪个证书的。理论上SQL Server使用它找到的“第一个”证书,但是我们不能确定第一个证书是哪个。

基于上述的考虑,为了确定SQL Server使用我们想要的证书,我们推荐永远使用编辑Certificate注册表键值的方式来配置证书。具体的配置方式是:

1.       在Certificate中打开要使用的证书,复制其thumbprint。

2.       如果HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib\Certificate不存在的话,就手动创建一个。需要注意的是,对于SQL Server 2000的,键值的类型是binary,对于SQL Server 2005及以后版本的SQL Server,键值的类型是string。

3.       对于SQL Server 2000,将thunbprint的值逐个输入到certificate键值中去。对于SQL Server 2005及以后版本的SQL Server,将thumbprint中的空格全部删除,然后复制到certificate键值中去。

最后,对于cluster环境下的SQL Server,由于证书的subject CN域等于SQL Server的虚拟网络名而不是某个节点的FQDN,因此无论你在哪个节点使用SQL Server Configuration Manager都是看不到该证书的,所以cluster环境下我们需要在所有cluster节点上手动编辑Certificate键值来为SQL Server配置证书。

当证书被成功配置后,我们启动SQL Server,然后检查SQL Server的error log。如果看到这么一句话:

 

The certificate was successfully loaded for encryption.

 

 

那么我就可以确认证书配置成功了。从SQL Server 2008开始,上述信息后面还会附带所装载证书的thumbprint,方便你进一步确认SQL Server确实使用了你所指定的证书。


  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: SQL 是一种用于存储和检索数据的标准语言。要使用SQL,您首先需要了解SQL语句的基本语法,包括SELECT,INSERT,UPDATE,DELETE,ALTER,CREATE,DROP 等等。其次,您还需要了解数据库的不同组件,比如表,视图,触发器等。最后,您需要熟悉使用SQL的工具,如MySQLSQL Server,Oracle等。 ### 回答2: 如何使用SQL SQL(Structured Query Language)是一种用于管理和操作关系型数据库的编程语言。以下是使用SQL的一般步骤: 1. 创建数据库:首先,您需要使用SQL命令创建一个数据库。创建数据库的命令通常是CREATE DATABASE [database_name]。 2. 创建表格:接下来,您需要在数据库中创建一个或多个表格来组织数据。使用CREATE TABLE命令可以创建一个新表格,并指定每个列的名称、数据类型和约束。 3. 插入数据:一旦表格创建完成,您可以使用INSERT INTO命令将数据插入表格中。为每个列提供相应的值,并在插入多行时重复此过程。 4. 查询数据:使用SELECT命令,您可以从表格中检索数据。通过指定所需列、表格名称以及可选的筛选条件,您可以获得满足条件的数据。 5. 更新数据:如果需要更新表格中的数据,可以使用UPDATE命令。指定表格名称,设置要更新的列和新值,并提供适当的筛选条件以确定要更新的行。 6. 删除数据:如果要删除表格中的数据,可以使用DELETE FROM命令。提供表格名称和筛选条件以确定要删除的行。 7. 修改表格结构:如果需要更改表格的结构(例如添加列、删除列或更改列的数据类型),可以使用ALTER TABLE命令。 8. 删除表格:如果不再需要某个表格,可以使用DROP TABLE命令将其从数据库中删除。 值得注意的是,上述仅为SQL的基本用法示例。SQL还有更高级的用法,如连接多个表格、使用聚合函数、创建索引等。熟练掌握SQL可能需要更深入的学习和实践。 ### 回答3: SQL是结构化查询语言,用于管理关系型数据库。以下是使用SQL的一些基本步骤: 1. 设计数据库结构:首先,需要确定要存储哪些数据以及它们之间的关系。根据需求设计数据库表,并定义每个表中的字段和数据类型。 2. 创建数据库和表:使用SQL命令创建一个新的数据库,并在数据库中创建所需的表。可以使用CREATE DATABASE和CREATE TABLE命令来完成这些任务。 3. 插入数据:使用INSERT INTO命令将数据插入到创建的表中。指定要插入的表和字段,并提供要插入的值。 4. 更新和删除数据:使用UPDATE和DELETE命令更新和删除已存在的数据。需要指定要更新或删除的表、条件和要执行的操作。 5. 查询数据:使用SELECT命令从表中检索数据。可以指定检索的字段、表和条件,以获取满足特定要求的数据。 6. 进行复杂查询:SQL提供了许多高级查询功能,例如加入多个表、排序数据、分组数据和使用聚合函数等。可以使用JOIN、ORDER BY、GROUP BY和聚合函数等命令执行更复杂的查询。 7. 创建索引:为提高查询性能,可以使用CREATE INDEX命令创建索引。索引可以加速数据检索操作。 8. 进行备份和恢复:定期备份数据库以防止数据丢失。可以使用SQL命令执行数据库备份和恢复操作。 9. 管理安全性:使用SQL命令创建和管理用户账户,并分配适当的权限。确保只有授权用户才能访问和修改数据库。 10. 优化和调试:使用SQL的性能优化技术和调试工具,提高查询性能并解决可能出现的问题。 总之,使用SQL可以管理和操作关系型数据库。以上是使用SQL的基本步骤和技巧,可以根据具体的需求和情况进一步深入学习和应用SQL语言。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值