Laravel SQL Server 错误:SQL Server 的 ODBC 驱动程序 18]SSL 提供程序:[错误:1416F086:SSL

Car*_*llo 2 sql-server ssl laravel

我得到的完整错误是:

SQLSTATE[08001]:[Microsoft][适用于 SQL Server 的 ODBC 驱动程序 18]SSL 提供程序:[错误:1416F086:SSL 例程:tls_process_server_certificate:证书验证失败:无法获取本地颁发者证书](SQL:显示表)(查看:/ var/www/html/uvk/resources/views/index.blade.php)

我有 SSL 证书并且可以通过 HTTPs 连接

Alw*_*ing 15

您的 Web 服务器的 SSL/TLS 证书与错误消息无关,它指的是 SQL Server 服务使用的证书。

请参阅ODBC Driver 18.0 for SQL Server Released其中提到:

变化

  • 重大更改 - 默认加密为是/强制。

ODBC Driver 18 for SQL Server 和 JDBC Driver 10.2 for SQL Server 均默认使用Encrypt=yes;连接字符串选项,目的是提高 SQL Server 用户和开发人员的数据安全性。不幸的是,默认情况下,SQL Server 实例安装有自签名 X.509 证书,该证书不受任何 CA(证书颁发机构)信任,因此大多数升级到这些版本的驱动程序的人都会收到与您类似的错误。

您在这里有三个选择:

  1. 将目标 SQL Server 证书的公钥部分导出到 .crt 文件并将其导入到需要连接到该文件的用户的受信任证书存储中,或者
  2. TrustServerCertificate=true;(或TrustServerCertificate=yes;,取决于您的编程语言)添加到您的连接字符串中,以便服务器的证书被正确接受并允许安全、加密的连接,或者
  3. Encrypt=false;(或Encrypt=no;,取决于您的编程语言)添加到您的连接字符串中。这是最不理想的选项,因为它会阻止连接被加密,这意味着可以轻松拦截和检查 SQL Server 和客户端之间的流量。