Подключение к mysql с использованием ssl в Zend framework

используя этот код, я могу подключиться к mysql, используя Zend framework обычно:

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);
    }

Теперь проблема в том, что я хочу подключиться к MySQL, используя протокол SSL, но я не нашел никакой документации о том, как это сделать.

мне удалось установить соединение с помощью Navicat с сервером с помощью администратора базы данных, настроив ssl-соединение следующим образом: enter image description here

проблема сейчас как подключиться с помощью PHP?

4 ответов


вы должны иметь возможность указать следующие параметры драйвера:

;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"

от http://php.net/manual/en/ref.pdo-mysql.php:

поддержка SSL включена с помощью соответствующего константы PDO_MySQL, что эквивалентно вызову " MySQL C API функция mysql_ssl_set (). Кроме того, SSL не может быть включен с PDO::setAttribute, потому что соединение уже существует. Смотрите также документацию MySQL о " подключение к MySQL с помощью SSL.

Смотрите также: http://php.net/manual/en/ref.pdo-mysql.php#103501

для правильной работы установки PHP также потребуется openssl.


моя рабочая конфигурация для Zend Db (адаптер: Pdo_Mysql) через SSL:

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 ("www-data" в Debian), если ваше приложение основано на интернете, что я предполагаю.


для подключения к Zend установите приложение.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"