[英]How to setup an SSL encrypted MySQL connection with Doctrine2 in PHP (not Symfony, not Doctrine1)
我很难找到如何使用Doctrine2到MySQL建立SSL加密连接的文档/示例。 我没有使用Symfony,所以寻找纯PHP路径。
我坚持的基本上是如何传达MYSQL_CLIENT_SSL(或MYSQLI_CLIENT_SSL)标志,以及ca证书的路径。 我可以忍受不验证证书,但我不能忍受不加密此任务的连接。
在命令行上,这将完成类似于此:
mysql --ssl-verify-server-cert --ssl-ca=/mysql-ssl-certs/ca-cert.pem --ssl -h host [etc]
在使用mysql扩展的纯php中,我认为它看起来像:
$conn = mysql_connect($host, $user, $pass, false, MYSQL_CLIENT_SSL);
使用mysqli(我认为)它会是这样的:
$db = mysqli_init();
$db->ssl_set(null, null, $cert, null, null);
$db->real_connect($host, $user, $pass, $dbname);
问题是,我如何使用Doctrine2做到这一点? 它甚至可能吗? 如何修改Doctrine2的初始化来执行此操作?
$DOCTRINE2_DB = array(
'driver' => 'pdo_mysql',
'host' => $host,
'user' => $user,
'password' => $pass,
'dbname' => $dbname,
'unix_socket' => $sockpath,
);
$DOCTRINE2_EM = \Doctrine\ORM\EntityManager::create($DOCTRINE2_DB, $DOCTRINE2_CONFIG);
$EM =& $DOCTRINE2_EM; // for brevity & sanity
您应该能够添加其他参数driverOptions并为PDO设置适当的SSL配置
http://es1.php.net/manual/es/ref.pdo-mysql.php#pdo-mysql.constants
$DOCTRINE2_DB = array(
'driver' => 'pdo_mysql',
'host' => $host,
'user' => $user,
'password' => $pass,
'dbname' => $dbname,
'unix_socket' => $sockpath,
'driverOptions' => array(
PDO::MYSQL_ATTR_SSL_CA => '...',
PDO::MYSQL_ATTR_SSL_CERT => '...',
PDO::MYSQL_ATTR_SSL_KEY => '...'
)
);
[编辑ASKER:]以下是它对我有用的方式:
$DOCTRINE2_DB = array(
'driver' => 'pdo_mysql',
'host' => $host,
'user' => $user,
'password' => $pass,
'dbname' => $dbname,
'unix_socket' => $sockpath,
'driverOptions' => array(
PDO::MYSQL_ATTR_SSL_CA => '/file/path/to/ca_cert.pem',
)
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.