如何使用PHP/PDO从Ubuntu创建到SQL Server的加密连接
我正在尝试从运行在Ubuntu上的PHP/Zend Framework应用程序和远程位置连接到SQL Server 我正在尝试让连接应用程序从SQL Server请求加密(因为1433上的默认连接处于清除状态,我不希望我的凭据被嗅探) 我已经在SQL Server上配置了通配符SSL证书,并且正在使用以下DSN创建PDO连接:如何使用PHP/PDO从Ubuntu创建到SQL Server的加密连接,php,sql-server,ubuntu,pdo,Php,Sql Server,Ubuntu,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;TrustServerCe
dblib:host=server-not-matching-domain.com:1433;dbname=MyDB;Encrypt=true;TrustServerCertificate=false;charset=
取自
由于主机名与安装的证书不匹配,我希望连接会失败,但不会失败。这比仅仅设置标志更复杂 请参阅本博客:
ssl证书=/etc/ssl/mysql/server.cert
ssl key=/etc/ssl/mysql/server.key
mysqld重新启动
希望有帮助。可能是
Encrypt=true;根本不考虑TrustServerCertificate
?
如果不是这方面的专家,请查看关于PDO_DBLIB DSN
的文档。如前所述,DSN中有一个特殊参数称为secure
,当前未使用。
我不确定这是否是声明您希望在此DSN中建立安全连接的正确方式,而且它被标记为未使用的,这一事实也毫无帮助
此外,还要执行以下操作
在php.ini中,确保设置了以下内容:mssql.secure\u connection=On
看看通过PDO_ODBC
连接是否更符合您的目标。要通过PDO_ODBC连接
查看此尝试安装AES加密证书这是我用来保护凭据不被嗅探的最好方法
dblib:host=server-not-matching-domain.com:1433;dbname=MyDB;Encrypt=true;TrustServerCertificate=true;charset=utf8
将php.ini文件中ssl证书的默认值设为true
然后使用AES进行处理当您说您有一个通配符SSL证书时,该证书与哪个CNs匹配?我怀疑驱动程序可能永远不会进行实际的CN到主机名检查;TrustServerCertificate=false仅阻止自签名证书。问题是主机名与通配符域绝对不匹配,因此我预计会出现错误。如果在这种情况下我没有收到证书错误,那么当主机名匹配时,我就不能信任连接。有趣的是-我的问题似乎重复了:-这里和那里都有很好的答案。。。协议是什么?你能准确地验证你使用的驱动程序和客户端是Ubuntu吗?sqlncli-11.0.1790.0?我这么问是因为我上次尝试这个是在混音中。PDO_SQLSRV仅适用于Windows。也许您应该添加到freetds.conf/odbc.iniencryption=require
和检查证书主机名
?能否引用本文的相关部分?如果答案不仅仅是一个链接,我可能会接受。这个问题被标记为sql server
,表示Microsoft sql server。你的答案是MySQL,这是一个不同的DBMS产品。@HorusKol不需要mate,我总是检查它,以防有什么变化或我忘记了什么。毕竟,我们在这个游戏中,因为底线是我们大多是读者。。。我们喜欢阅读和解决问题。:)干杯