SQL Server 2014及以上版本无DNS仅通过IP访问时能否加密连接?
可以实现!SQL Server 2014+ 用IP地址加密连接的方案
当然可以做到——虽然你的SSL证书绑定的是域名,但只要调整客户端和服务器端的配置,就能实现仅通过IP地址访问时的加密连接,原理和你提到的SslStream忽略域名匹配的场景类似,下面分步骤说明:
服务器端配置前提
首先得确保你的域名证书已经正确部署到SQL Server所在服务器:
- 把证书导入到服务器的本地计算机 → 个人 → 证书存储中,证书必须具备「服务器身份验证」的增强密钥用途,且SQL Server的服务账户拥有该证书私钥的读取权限。
- 打开SQL Server配置管理器,找到目标实例的SQL Server网络配置 → [实例名]的协议,右键点击TCP/IP协议:
- 在「证书」选项卡中,选择你安装好的域名证书;
- 在「标志」选项卡,根据需求设置「强制加密」:设为「是」则所有连接必须加密,设为「否」则由客户端主动发起加密请求。
客户端连接的两种实现方式
这部分是核心,因为默认情况下客户端用IP连接时,会验证证书的主体/ SAN是否匹配IP,所以需要做以下调整:
方式一:跳过证书名称验证(快捷方案)
在客户端的连接字符串中添加TrustServerCertificate=true参数,这个参数会让客户端跳过证书名称与连接IP的匹配校验,直接信任服务器证书,和你说的SslStream场景逻辑一致。
示例连接字符串:
Server=192.168.1.100,1433;Database=YourDB;User Id=YourUser;Password=YourPass;Encrypt=true;TrustServerCertificate=true;
这种方式适合内部可信环境、测试场景,优点是无需修改证书,快速生效。
方式二:给证书添加IP作为SAN(安全生产方案)
如果追求更高的安全性,不想跳过名称验证,可以重新申请或修改现有证书,在**主题备用名称(SAN)**字段中添加目标服务器的IP地址。这样证书同时包含域名和IP,客户端用IP连接时,会验证SAN中的IP,匹配通过后即可正常建立加密连接。
这种方式符合PKI安全规范,适合生产环境,但需要证书颁发机构(CA)支持添加SAN字段,或者使用自签名证书时自行配置。
额外注意事项
- SQL Server 2014及以上版本都完全支持上述两种方案,没有版本限制;
- 确保服务器端的TCP/IP协议已启用,且防火墙开放了SQL Server的监听端口(默认1433);
- 如果使用自签名证书,无论用域名还是IP连接,客户端都需要信任该证书(或者用
TrustServerCertificate=true)。
内容的提问来源于stack exchange,提问作者uncaged




