【问题标题】:Laravel SQL Server Error: ODBC Driver 18 for SQL Server]SSL Provider: [error:1416F086:SSLLaravel SQL Server 错误:SQL Server 的 ODBC 驱动程序 18]SSL 提供程序:[错误:1416F086:SSL
【发布时间】:2022-08-18 05:36:48
【问题描述】:

我得到的完整错误是:

SQLSTATE[08001]:[Microsoft][ODBC Driver 18 for SQL Server]SSL 提供程序:[错误:1416F086:SSL 例程:tls_process_server_certificate:证书验证失败:无法获取本地颁发者证书](SQL:SHOW TABLES)(查看:/ var/www/html/uvk/resources/views/index.blade.php)

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

    标签: sql-server laravel ssl


    【解决方案1】:

    您的 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 实例安装有不受任何 CA(证书颁发机构)信任的自签名 X.509 证书,因此大多数升级到这些版本的驱动程序的人都会收到与您类似的错误。

    您在这里有三个选择:

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

    【讨论】:

    • 在我的情况下,“是”不起作用,所以我使用了 TrustServerCertificate=True 并且它起作用了。
    • 很高兴听到它有帮助。一些访问 ODBC/JBDC 的库需要Yes/No 设置,其他的需要True/False,所以绝对值得尝试两者来看看哪个有效。答案中链接的博客/发行说明使用这两个版本。
    • 谢谢@AlwaysLearning,我很困惑为什么我的服务器连接似乎无缘无故地中断了。好像自从我开始使用 ODBC 18 而不是 ODBC 17 以来,我需要将 TrustServerCertificate=Yes 添加到连接字符串中,就像你说的那样。现在它又可以工作了:D
    • 您好,我有类似的问题,尝试使用参数 TrustServerCertificate=true 连接到数据库时收到的消息是“[ODBC Driver 18 for SQL Server]SSL Provider: [error:0A0C0103:SSLroutines::internal error] ”。如果我将其设置为 false,我会得到“SSL Provider: [error:0A000086:SSL routines::certificate verify failed:self-signed certificate]”。 ODBC 17 和 18 也是如此。奇怪的是,对于其他数据库,我没有这个问题……我正在研究 OSX Big Sur。有谁知道如何解决它?
    • @Drewkenobi 我建议为此提出一个新问题,提供尽可能多的细节。您要连接的 SQL Server 的管理员是否反对应用 Service Pack 和累积更新? 12.0.2000.8 是最初的 SQL Server 2014 RTM(从那时起已经有 3 个 Service Pack 和四个额外的累积更新),而 14.0.1000.169 是最初的 SQL Server 2017 RTM(从那时起已经有 29 个累积更新)。
    猜你喜欢
    • 2022-06-15
    • 2018-07-26
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-24
    • 1970-01-01
    • 2018-12-31
    相关资源
    最近更新 更多