PHP使用SSL连接到MS SQL

时间:2016-01-19 11:45:08

标签: php sql ubuntu ssl

我的意思是非常简单。我想通过安全连接从PHP脚本连接到外部MS SQL数据库。然而,这已经证明是有问题的,到目前为止,研究投入了三个小时,我感到很茫然。

客户端的平台是Ubuntu,这意味着我不能使用SQLSRV。 安全连接已经过不同客户端的测试,工作正常。 我目前正在使用PDO和DBlib连接到数据库,这也可以正常工作。

我无法找到任何强制安全连接的方法。我尝试了多个其他驱动程序,但无济于事。

我有什么选择?

编辑:我留下了以下FreeTDS日志......

config.c:543:   Got a match.
config.c:565:   host = 'XXXXXXXXXX'
config.c:595:   Found host entry XXXXXXXXXX.
config.c:599:   IP addr is XXXXXXXXXX.
config.c:565:   port = '1433'
config.c:565:   encryption = 'require'
config.c:565:   check certificate hostname = 'no'
config.c:629:   UNRECOGNIZED option 'check certificate hostname' ... ignoring.
config.c:565:   ca file = 'XXXXXXXXXX.pem'
config.c:629:   UNRECOGNIZED option 'ca file' ... ignoring.

2 个答案:

答案 0 :(得分:3)

如果要使用PDO,可以设置PDO ODBC。您需要设置配置文件/etc/odbc.ini/etc/odbcinst.ini/etc/freetds/freetds.conf

您还必须安装unixodbc和freetds:apt-get install unixodbc tdsodbc

您可以在此处查看更多信息:Connect PHP to MSSQL via PDO ODBC

编辑:要在ODBC中强制执行SSL,请添加Encrypt关键字并在连接字符串中将其设置为true。并设置您的SQL Server以使用SSL:https://support.microsoft.com/en-us/kb/316898

编辑2:根据OP,按照以下规范将encryption=requirecheck certificate hostname添加到freetds.config:http://www.freetds.org/userguide/freetdsconf.htm以及上述步骤将解决问题

答案 1 :(得分:1)

您是否已将mssql_connect配置为使用安全连接?查看php.ini并验证mssql.secure_connection参数是否已设置为

[MSSQL]
mssql.secure_connection = On