我通过PHP PDO与MSSQL服务器建立了连接.
$mssql = new PDO('dblib:host=1.2.3.4;dbname=databasename', 'username', 'password');
Run Code Online (Sandbox Code Playgroud)
我现在需要这个连接是安全的,通过SSL发送所有事务.我没有在DBLIB驱动程序的PHP手册中看到任何对安全连接的引用.
有人可以提供一些有关如何通过SSL启用此连接的见解吗?(如果需要,我可以在两台服务器上导出和导入证书.)
编辑:我在PHP 5.5.9.
我正在尝试从在Ubuntu上运行的PHP/Zend Framework应用程序和远程位置连接到SQL Server.
我正在尝试让连接应用程序从SQL Server请求加密(因为1433上的默认连接是明确的,我不希望我的凭据被嗅探).
我在SQL Server上配置了通配符SSL证书,我正在使用以下DSN创建PDO连接:
dblib:host=server-not-matching-domain.com:1433;dbname=MyDB;Encrypt=true;TrustServerCertificate=false;charset=
Run Code Online (Sandbox Code Playgroud)
由于主机名与安装的证书不匹配,我希望连接失败 - 但它不会失败.
我已经在一个网络上的一台服务器上成功设置了一个启用SSL的MySQL安装,并且可以使用SSL在不同网络上的另一台服务器上使用Linux命令行mysql客户端连接到它,但每次我尝试连接时(使用PHP 5.3) .3)我一直得到:
警告:mysqli_real_connect():( HY000/2026):第18行/var/www/html/test.php中的SSL连接错误
我的PHP如下,我做错了什么?证书是777(仅在测试时),相同的代码适用于不同用户的未加密连接(SSL设置被注释掉,即mysqli一般可以肯定地连接到数据库)
<?php
error_reporting(E_ALL);
ini_set("display_errors", "1");
$obj = mysqli_init();
mysqli_options($obj, MYSQLI_OPT_CONNECT_TIMEOUT, 5);
mysqli_ssl_set($obj,
'/mysql-ssl-certs/server-key.pem',
'/mysql-ssl-certs/server-cert.pem',
'/mysql-ssl-certs/ca-cert.pem',
NULL,
NULL);
$link = mysqli_real_connect($obj, 'localhost', 'ssluser', 'some_password', 'test');
if (!$link)
{
die('<br /><br />Connect Error (' . mysqli_connect_errno() . ') '.mysqli_connect_error());
}
echo 'Success... ' . mysqli_get_host_info($obj) . "\n";
$obj->close();
?>
Run Code Online (Sandbox Code Playgroud)