繁体   English   中英

如何使用PHP / PDO从Ubuntu创建到SQL Server的加密连接

[英]How to create an encrypted connection to SQL Server from Ubuntu using PHP/PDO

我正在尝试从在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=

来自http://blogs.msdn.com/b/brian_swan/archive/2011/03/08/sql-server-driver-for-php-connection-options-encrypt.aspx

由于主机名与安装的证书不匹配,我希望连接失败 - 但它不会失败。

可能是Encrypt=true;TrustServerCertificate根本没有被考虑? 如果不是专家,请查看PHP中有关PDO_DBLIB DSN的文档。 如上所述,DSN中有一个特殊参数,称为secure且当前未使用。 我不确定这是否应该是声明您希望在此DSN中建立安全连接的正确方法,并且它在标记为unused情况下也没有帮助。

另外还要做以下事情

php.ini中,确保设置以下内容: mssql.secure_connection = On

看看通过PDO_ODBC连接是否更适合您想要实现的目标。 要通过PDO_ODBC进行连接, PDO_ODBC查看此示例

尝试安装AES ENCRYPTION CERTIFICATE这是我用来保护凭证免受嗅探的最好方法

dblib:host=server-not-matching-domain.com:1433;dbname=MyDB;Encrypt=true;TrustServerCertificate=true;charset=utf8

在php.ini文件中使ssl crtificate的默认值为true,然后使用AES进行处理

这比设置一个标志更复杂。

请参阅此博客: http//www.madirish.net/214

  1. 您必须在mysql服务器上创建或安装ssl证书。
  2. 在my.cnf中进行以下设置:

    SSL的CA =的/ etc / SSL / MySQL的/ server.csr
    SSL证书=的/ etc / SSL / MySQL的/ server.cert
    SSL的密钥=的/ etc / SSL / MySQL的/ server.key

  3. 重启mysql: mysqld restart

  4. 创建客户端密钥

  5. 将这些密钥与用户名和密码一起发送。

以下stackoverflow答案详细说明:

使用PHP从SSL连接到远程MySQL服务器

PHP到MySQL的SSL连接

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM