在Zend框架中使用ssl连接到mysql

时间:2012-12-19 17:55:12

标签: php mysql zend-framework ssl

使用此代码我可以正常使用zend框架连接到mysql:

resources.db.adapter = "Pdo_Mysql"
resources.db.params.host = "xx.xx.xx.xx"
resources.db.params.username = "test_user"
resources.db.params.password = "test_pass"
resources.db.params.dbname = "test_database"
resources.db.params.port="xxxx"

;parameters here for ssl connection??

在我的Controller

  public function indexAction() {
        $config = new Zend_Config_Ini('/path/to/application.ini', 'development');
        $db = Zend_Db::factory($config->resources->db);
        $sql = 'SELECT * FROM test_table';
        $result = $db->fetchAll($sql);

        echo '<pre>';
        print_r($result);
    }

现在问题是我想使用 ssl 连接到mysql,但我还没有找到任何关于如何做到这一点的文档。

我设法通过配置ssl连接,在数据库管理员的帮助下使用Navicat建立连接到服务器,如下所示: enter image description here

现在的问题是如何使用php连接?

4 个答案:

答案 0 :(得分:3)

你应该可以像这样指定驱动程序选项:

;PDO::MYSQL_ATTR_SSL_KEY
resources.db.params.driver_options.1010 = "/path/to/client-key.pem"
;PDO::MYSQL_ATTR_SSL_CERT
resources.db.params.driver_options.1011 = "/path/to/client-cert.pem"
;PDO::MYSQL_ATTR_SSL_CA
resources.db.params.driver_options.1012 = "/path/to/ca-cert.pem"

答案 1 :(得分:2)

来自http://php.net/manual/en/ref.pdo-mysql.php

  

使用相应的PDO_MySQL constants启用SSL支持,这相当于调用» MySQL C API function mysql_ssl_set()。此外,无法使用PDO :: setAttribute启用SSL,因为连接已存在。另请参阅有关» connecting to MySQL with SSL

的MySQL文档

另请参阅:http://php.net/manual/en/ref.pdo-mysql.php#103501

您的PHP安装还需要openssl才能使其正常工作。

答案 2 :(得分:2)

我通过SSL的Zend Db(适配器:Pdo_Mysql)的工作配置:

Array
(
    [host] => XX.XX.XX.XX
    [username] => nice-user
    [password] => ************
    [dbname] => database
    [driver_options] => Array
        (
            [1010] => /path/to/client-key.pem
            [1011] => /path/to/client-cert.pem
            [1012] => /path/to/ca-cert.pem
            [1013] => 
            [1014] => DHE-RSA-AES256-SHA
        )
)

如果你的应用程序是基于网络的,那么确保Apache用户可以读取上面列出的证书文件(Debian上的'www-data'),我认为它是。

答案 3 :(得分:1)

要与Zend连接,请将application.ini设置为:

;PDO::MYSQL_ATTR_SSL_KEY = 1007
resources.db.params.driver_options.1007 = "/path/to/client-key.pem"
;PDO::MYSQL_ATTR_SSL_CERT = 1008
resources.db.params.driver_options.1008 = "/path/to/client-cert.pem"
;PDO::MYSQL_ATTR_SSL_CA = 1009
resources.db.params.driver_options.1009 = "/path/to/ca-cert.pem"