我正在尝试设置自签名证书,以将 Jetty 服务器连接到开发 SQL 数据库。我按照以下说明进行操作:https://codekabinett.com/rdumps.php?Lang=2&targetDoc=create-install-ssl-tls-certificate-sql-server但我遇到了一点障碍。当我尝试在 sql server 管理器中安装证书时,下拉列表中没有显示任何证书。我想可能是我需要将证书添加到受信任的,所以我这样做了,然后再次尝试,结果相同。
我现在怀疑我在创建证书时选择的通用名称 (CN) 与 sqlserver 的期望不匹配。根据说明
这必须是 SQL Server 计算机的计算机名称(本地 Windows 计算机名称,而不是 DNS 名称)。
SQL 服务器位于远程计算机上。如何确定证书的正确 CN?是否可以使用在本地计算机上运行的 SQLServerManager 为该 SQL 服务器配置证书?如果不行,我该怎么做?
更新:
我正在验证我的证书是否可用于 sqlserver。我使用了以下查询:
DECLARE @Domain NVARCHAR(100)
EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\services\Tcpip\Parameters', N'Domain',@Domain OUTPUT
SELECT Cast(SERVERPROPERTY('MachineName') as nvarchar) + '.' + @Domain AS FQDN
获取 FQDN 并将其用作证书的 CN。我验证了证书的 KeyUsage 属性是服务器身份验证(1.3.6.1.5.5.7.3.1)。我使用的是 pfx,因此 KeySpec 选项应该不错。我将 pfx 添加到受信任的根证书颁发机构中。
我仍然没有在 SQL Server 管理器中看到证书选项,所以我肯定还遗漏了其他内容。我唯一能想到的就是要求
SQL Server 服务帐户必须具有访问 TLS 证书所需的权限
但我不确定如何验证它,或者如果它是错误的,如何修复它。
答案1
证书名称(在主题备用名称扩展中)必须与主机的 FQDN(或 DNS 名称)匹配,而不仅仅是计算机名称。证书中的名称必须与SQL 连接字符串中的Server
或属性匹配。Data Source