我需要从 PHP 连接到 SQL Server 2008 实例。 Web服务器是 Centos 8 上的 Apache 2.4,带有 PHP 7.4、php-sqlsrv 扩展,我使用 PDO 来处理连接。 首先我测试了 cli 的连接,出现以下错误:
连接失败:SQLSTATE[08001]:[Microsoft][SQL Server 的 ODBC 驱动程序 17]SSL 提供程序:[错误:1425F102:SSL 例程:ssl_choose_client_version:不支持的协议]
稍微谷歌搜索一下,我就找到了 openssl.cnf 的方向,我将最低版本设置为 TLS 1.0(我知道它不安全,但它似乎有效),然后连接工作了,但仅限于 cli,当我从网站上尝试时,它仍然给出相同的错误。
我用于连接的代码是这样的(我更改了连接数据):
try {
$conn = new PDO("sqlsrv:Server=database.local,1433;Database=database", "user", "password");
}
catch (PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
你能帮我找出我错过了什么吗?
谢谢你
update-crypto-policies --set LEGACY
设置后也有同样的问题
MinProtocol = TLSv1
CipherString = DEFAULT@SECLEVEL=0
在
/etc/ssl/openssl.cnf
可以在 PHP-CLI 中工作,但不能通过 Apache 工作。
为我解决这个问题的方法是将/etc/apache2/mods-available/ssl.conf
中的
SSLCipherSuite指令从
HIGH:!aNULL
更改为HIGH:!aNULL:@SECLEVEL=1
并重新启动apache。