当你遇到 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 参数。
示例:
- <?php
- // 定义数据库连接参数
- $serverName = "your_server_name"; // 例如: "localhost" 或 "192.168.1.100"
- $port = "1433"; // 默认端口为 1433,可以根据实际情况修改
- $databaseName = "your_database_name";
- $username = "your_username";
- $password = "your_password";
- try {
- // 创建 DSN (Data Source Name),指定端口号并禁用 SSL 验证
- $dsn = "sqlsrv:Server=$serverName,$port;Database=$databaseName;Encrypt=false";
- // 创建 PDO 实例
- $pdo = new PDO($dsn, $username, $password);
- // 设置 PDO 错误模式为异常
- $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
- // 测试连接
- echo "连接成功!";
- } catch (PDOException $e) {
- // 捕获并处理连接错误
- echo "连接失败: " . $e->getMessage();
- }
- // 关闭连接
- $pdo = null;
- ?>
复制代码
留意事项
生产环境:在生产环境中禁用 SSL 验证是不推荐的,因为这会降低安全性。发起在生产环境中使用由受信任的 CA 签发的证书。
证书链:确保整个证书链都已导入到受信任的根证书存储中,而不仅仅是服务器证书。
总结
通过上述方法,你可以办理 SSL 提供程序: 证书链是由不受信任的颁发机构颁发的 错误。选择得当你环境的方法来办理问题。如果你在生产环境中使用自署名证书,发起尽快更换为由受信任的 CA 签发的证书。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |