毗连失败: SQLSTATE[08001]: [Microsoft][ODBC Driver 18 for SQL Server]S ...

知者何南  金牌会员 | 2025-3-21 22:43:49 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 980|帖子 980|积分 2940

当你遇到 SQLSTATE[08001]: [Microsoft][ODBC Driver 18 for SQL Server]SSL 提供程序: 证书链是由不受信任的颁发机构颁发的 错误时,这意味着 SQL Server 使用的 SSL 证书是由不受信任的证书颁发机构(CA)签发的。这通常是由于使用了自署名证书或内部 CA 证书。
办理方法
方法一:信任证书颁发机构
1. 导入证书到受信任的根证书存储:
- 获取 SQL Server 的证书。
- 将证书导入到客户端呆板的受信任根证书存储中。
Windows 上的步骤:
1. 打开“运行”对话框(Win + R),输入 mmc 并按 Enter。
2. 在控制台窗口中,选择“文件” > “添加/删除管理单位”。
3. 在“添加或删除管理单位”对话框中,选择“证书”,然后点击“添加”。
4. 选择“计算机账户”,然后点击“下一步”。
5. 选择“当地计算机”,然后点击“完成”。
6. 关闭“添加或删除管理单位”对话框。
7. 在控制台树中,展开“证书(当地计算机)” > “受信任的根证书颁发机构” > “证书”。
8. 右键点击“证书”,选择“所有任务” > “导入”。
9. 按照向导的提示导入 SQL Server 的证书。

方法二:禁用 SSL 验证
如果你在开辟环境中使用自署名证书,并且不介意禁用 SSL 验证,可以在毗连字符串中添加 Encrypt=false 参数。
示例:
  1. <?php
  2. // 定义数据库连接参数
  3. $serverName = "your_server_name"; // 例如: "localhost" 或 "192.168.1.100"
  4. $port = "1433"; // 默认端口为 1433,可以根据实际情况修改
  5. $databaseName = "your_database_name";
  6. $username = "your_username";
  7. $password = "your_password";
  8. try {
  9.     // 创建 DSN (Data Source Name),指定端口号并禁用 SSL 验证
  10.     $dsn = "sqlsrv:Server=$serverName,$port;Database=$databaseName;Encrypt=false";
  11.     // 创建 PDO 实例
  12.     $pdo = new PDO($dsn, $username, $password);
  13.     // 设置 PDO 错误模式为异常
  14.     $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  15.     // 测试连接
  16.     echo "连接成功!";
  17. } catch (PDOException $e) {
  18.     // 捕获并处理连接错误
  19.     echo "连接失败: " . $e->getMessage();
  20. }
  21. // 关闭连接
  22. $pdo = null;
  23. ?>
复制代码

留意事项
生产环境:在生产环境中禁用 SSL 验证是不推荐的,因为这会降低安全性。发起在生产环境中使用由受信任的 CA 签发的证书。
证书链:确保整个证书链都已导入到受信任的根证书存储中,而不仅仅是服务器证书。
总结
通过上述方法,你可以办理 SSL 提供程序: 证书链是由不受信任的颁发机构颁发的 错误。选择得当你环境的方法来办理问题。如果你在生产环境中使用自署名证书,发起尽快更换为由受信任的 CA 签发的证书。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

知者何南

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表