目录
参考文章链接
[How To]如何给SQL Server配置证书:
https://learn.microsoft.com/zh-cn/archive/blogs/apgcdsd/how-tosql-server
准备证书
使用OpenSSL生成证书
安装OpenSSL证书生成工具
安装参考链接:
https://blog.csdn.net/qq_30150579/article/details/128796446
生成证书
-
创建 CSR(Certificate Signing Request)
使用私钥创建证书签名请求(CSR),其中可以指定一些详细信息,如组织名称、域名等。
openssl req -x509 -nodes -days 9999 -newkey rsa:2048 -keyout C:\Users\11617\Desktop\中转\证书\bis-server.key -out C:\Users\11617\Desktop\中转\证书\bis-server.crt -config C:\Users\11617\Desktop\中转\证书\bis-server.conf
在这个过程中会提示你输入一些必要的信息,确保域名正确无误。
bis-server.conf
[req] distinguished_name = req_distinguished_name x509_extensions = v3_req prompt = no [req_distinguished_name] C = CH ST = SC L = CD O = Test OU = Test1 CN = Test-PC [v3_req] keyUsage = critical, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth, clientAuth
-
自签名证书
如果不需要通过权威 CA 签发证书,可以选择自己签发证书。在创建自签名证书时,可以指定要支持的 TLS 版本以及包含的扩展,以确保兼容性和安全性。下面是一个例子,创建一个支持 TLSv1.2 和 TLSv1.3,并包含 ECDHE 加密套件的自签名证书:
openssl pkcs12 -export -out C:\Users\11617\Desktop\中转\证书\bis-server.pfx -inkey C:\Users\11617\Desktop\中转\证书\bis-server.key -in C:\Users\11617\Desktop\中转\证书\bis-server.crt
-
extensions.conf
[v3_req] basicConstraints = CA:FALSE keyUsage = digitalSignature, keyEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = your.domain.com [v3_ext] subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer extendedKeyUsage = serverAuth,clientAuth certificatePolicies = @policy [policy] policyIdentifier = 2.16.840.1.114412.1.1 CPS.1 = https://your.policy.url/ [crlDistributionPoints] URI.0 = http://your.crl.distribution.point/ [authorityInfoAccess] OCSP;URI.0 = http://your.ocsp.responder/ [tls_features] status_request = DER:30:03:02:01:05
使用Net SDK自带的makecert生成证书
-
使用makecert工具来生成pvk和cer文件:
makecert -r -pe -sv C:\Users\11617\Desktop\中转\证书\bis.pvk -n "CN=Test-PC" -b 01/01/2000 -e 01/01/2096 -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:\Users\11617\Desktop\中转\证书\bis.cer
-
使用pvk2pfx工具生成pfx文件:
pvk2pfx.exe路径位于C:\Program Files (x86)\Windows Kits\10\bin\XXXXX\x86下
pvk2pfx.exe -pvk C:\Users\11617\Desktop\中转\证书\bis.pvk -spc C:\Users\11617\Desktop\中转\证书\bis.cer -pfx C:\Users\11617\Desktop\中转\证书\bis.pfx -po 123456
安装证书
-
打开MMC管理单元:
- 按下
Win + R
键打开“运行”对话框。 - 输入
mmc
并按回车键,打开 Microsoft 管理控制台(Microsoft Management Console, MMC)。
- 按下
-
添加证书管理单元:
- 在MMC控制台中,点击顶部菜单栏的“文件”,然后选择“添加/删除管理单元”。
- 在“添加或删除管理单元”窗口中,找到并双击“证书”选项。
- 在“证书管理单元”的向导中,选择“计算机账户”(如果是给本地计算机安装证书),然后点击“完成”,最后点击“确定”。
-
导航至证书存储位置:
- 在左侧窗格中展开“证书(本地计算机)” -> “受信任的根证书颁发机构”。
- 右击“受信任的根证书颁发机构”,然后选择“所有任务” -> “导入”。
-
导入证书:
- 导入向导会引导你完成以下步骤:
- 点击“下一步”浏览要导入的证书文件(通常为 .cer 或 .p7b 格式)。
- 选择证书存储位置为“受信任的根证书颁发机构”。
- 如果证书需要密码,则输入相应密码。
- 完成向导中的剩余步骤,直至证书成功导入。
-
添加证书权限:
- windows状态栏右键打开任务管理器
- 选择服务,在服务中找到对应的sql实例对应的服务,我这里是"“SQL Server(SQLEXPRESS)”
- 双击服务,选择标签,复制“此账号”旁边的账号
- 回到Microsoft 管理控制台(MMC)
- 找到刚导入的证书,右键证书选择“所有任务”-》“管理私钥”
- 点击添加按钮打开,将刚刚复制的账号输入到“输入对象名称来选择框中”,点击确定添加
- 这一步非常总要,只有添加了用户,sqlserver服务重启才能启动起来
sqlserver使用证书
-
打开SQL Server配置管理器:
- 按下
Win + R
键打开“运行”对话框。 - 输入
SQLServerManager15.msc
并按回车键,打开SQL Server配置管理器。 - 各个sqlserver版本在对话框中输入对应的命令如下:
SQLServerManager15.msc(对于 SQL Server 2019 ) SQLServerManager14.msc(对于 SQL Server 2017 ) SQLServerManager13.msc(对于 SQL Server 2016 ) SQLServerManager12.msc(对于 SQL Server 2014) SQLServerManager11.msc(对于 SQL Server 2012 ) SQLServerManager10.msc(对于 SQL Server 2008 )
- 按下
-
SQL Server配置管理器配置:
- 导航到“SQL Server 网络配置”下的对应实例,例如:“MSSQLSERVER 的协议”
- 右键点击属性,选择“标志”。
- 将“常规”下的强行加密选项改为“是”。
- 旁边应该有个证书配置选项,可以直接下拉选择已安装的证书。
- 也可以通过修改注册文件来设置证书。
- 通过路径 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib\Certificate,找到Certificate,双击设置Certificate的值为证书的指纹(Thumbprint )的值;
- 证书指纹可通过在Microsoft 管理控制台(MMC)中双击证书,在详细信息标签页中进行查看
-
服务重启:
- 在完成上述配置后,需要重新启动 SQL Server 服务以及 SQL Server Browser 服务以便更改生效。
-
验证配置:
- 使用 SQL Server Management Studio (SSMS) 进行连接测试,在连接属性中勾选“加密连接”选项,并尝试连接。如果配置正确,应该会使用 SSL 加密进行连接。
数据库链接配置以及测试效果
其他
在配置过程中有可能会出现sqlserver服务重启不起来的问题,一般是配置的证书不符合sqlserver要求的原因,当然也可以查看sqlserver的错误日志来确定问题原因,sqlserver错误日志存放位置:
C:\Program Files\Microsoft SQL Server***\MSSQL\Log