You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ODBC Driver 18连接SSL模式SQL Server时遇主体名称错误

排查ODBC Driver 18连接SQL Server SSL时的"The target principal name is incorrect"错误

错误原因分析

这个错误核心是SSL握手阶段,客户端验证服务器证书的主体名称(Principal Name)与实际连接的服务器标识不匹配,常见触发场景包括:

  • 证书的Subject或Subject Alternative Name (SAN)字段未包含客户端连接时使用的服务器地址(如主机名、FQDN、IP)
  • 客户端连接字符串指定的服务器名称与证书内的标识完全不一致
  • SQL Server实际加载的证书并非你部署的目标证书,导致主体验证失败

解决方法

1. 校验证书主体与连接标识的匹配性

  • 在SQL Server机器上打开certlm.msc(本地计算机证书管理器),找到部署在个人>证书下的SQL Server证书,查看主题和使用者备用名称字段,确认其中包含你连接时使用的服务器地址(比如用IP连接则SAN需包含该IP,用FQDN则需对应域名)
  • 客户端连接时必须使用与证书标识完全一致的地址,例如证书内是sql-prod-01.company.com,就不能用sql-prod-01或IP发起连接

2. 确认SQL Server证书配置正确性

  • 打开SQL Server配置管理器,展开SQL Server网络配置 > [实例名]的协议,右键选择属性切换到证书标签,确认选中的证书是你部署的目标证书(主体名称与之前校验的一致)
  • 若证书未正确选中,重新选择后重启SQL Server服务

3. 临时调试用连接字符串调整(生产环境不推荐)

若仅需快速验证连接逻辑,可在ODBC连接字符串中添加TrustServerCertificate=Yes跳过主体名称验证,但该参数会降低SSL安全性,仅用于排查:

Driver={ODBC Driver 18 for SQL Server};Server=your-server-identity;Database=your-db;Uid=your-account;Pwd=your-password;Encrypt=Yes;TrustServerCertificate=Yes

4. 确认根CA证书的客户端部署

客户端机器需将根CA证书导入到受信任的根证书颁发机构(通过certmgr.msc操作),否则客户端无法信任服务器证书,也会触发类似验证错误

适用于SQL Server的自签名SSL证书创建参考步骤

以下流程使用PowerShell完成,可生成符合SQL Server要求的证书:

  1. 创建根CA证书:
$rootCA = New-SelfSignedCertificate -Type Custom -KeySpec Signature `
-Subject "CN=SQL Server Root CA" -KeyExportPolicy Exportable `
-HashAlgorithm sha256 -KeyLength 2048 `
-CertStoreLocation "Cert:\LocalMachine\My" `
-KeyUsageProperty Sign -KeyUsage CertSign, CRLSign
  1. 导出根CA证书为PFX文件,用于客户端部署:
Export-PfxCertificate -Cert $rootCA -FilePath "C:\temp\SQLRootCA.pfx" -Password (ConvertTo-SecureString "YourStrongPassword" -AsPlainText -Force)
  1. 创建绑定服务器标识的服务器证书(替换示例中的域名/IP为实际值):
$serverCert = New-SelfSignedCertificate -Type Custom -DnsName "sql-prod-01", "sql-prod-01.company.com", "10.0.0.50" `
-Subject "CN=sql-prod-01.company.com" -KeyExportPolicy Exportable `
-HashAlgorithm sha256 -KeyLength 2048 `
-CertStoreLocation "Cert:\LocalMachine\My" `
-Signer $rootCA -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.1")
  1. 导出服务器证书后,导入到SQL Server所在机器的LocalMachine\个人证书存储,再通过SQL Server配置管理器完成绑定

内容的提问来源于stack exchange,提问作者SreedharP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 02:15:41