Подключение к 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-соединение следующим образом:
проблема сейчас как подключиться с помощью 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"