【发布时间】:2022-06-15 16:22:10
【问题描述】:
尝试连接 SQL Server 时出现以下错误:
[Microsoft][ODBC Driver 18 for SQL Server]SSL 提供程序:[错误:1416F086:SSL 例程:tls_process_server_certificate:证书验证失败:自签名证书]
我在 Ubuntu 20、PHP 7.4 FPM、nginx 上。
服务器 Microsoft SQL Server [11.00.3128 Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 2012 年 12 月 28 日 20:23:12 版权所有 (c) 微软公司 Windows NT 6.2(内部版本 9200:)(管理程序)上的标准版(64 位) ]
当我:
openssl s_client -connect myserverip:1433 -tls1
我明白了:
已连接(00000003)
我的 openssl 库版本是:
OpenSSL 1.1.1f 2020 年 3 月 31 日(库:OpenSSL 1.1.1k 2021 年 3 月 25 日)
我尝试了很多方法,比如强制系统在 /etc/ssl/openssl.cnf 中使用 TLS1 或 nginx 配置降级到 tls1。
【问题讨论】:
-
与TLS协议版本无关。安装 SQL Server 时,它配置有自签名 X.509 证书。如果您想使用加密连接(在连接字符串中使用
Encrypt=yes;,这是现在的默认设置),您需要 1) 从服务器获取 X.509 证书的公钥并将其添加到您的受信任证书存储中在客户端上或 2) 在连接字符串中使用TrustServerCertificate=yes;设置。 -
阅读 ODBC Driver 18.0 for SQL Server Released 中的重大更改。
-
非常感谢!它正在工作知道!亲切的问候
-
嘿@Matt 你能告诉我你是怎么让它工作的吗?我有完全相同的错误
标签: php sql-server ubuntu openssl