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

如何使用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

我正在尝试从运行在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=
取自


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

这比仅仅设置标志更复杂

请参阅本博客:

  • 您必须在mysql服务器上创建或安装ssl证书
  • 在my.cnf中,执行以下设置:

    ssl ca=/etc/ssl/mysql/server.csr
    ssl证书=/etc/ssl/mysql/server.cert
    ssl key=/etc/ssl/mysql/server.key

  • 重新启动mysql:
    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.ini
    encryption=require
    检查证书主机名
    ?能否引用本文的相关部分?如果答案不仅仅是一个链接,我可能会接受。这个问题被标记为
    sql server
    ,表示Microsoft sql server。你的答案是MySQL,这是一个不同的DBMS产品。@HorusKol不需要mate,我总是检查它,以防有什么变化或我忘记了什么。毕竟,我们在这个游戏中,因为底线是我们大多是读者。。。我们喜欢阅读和解决问题。:)干杯