MDB2を使ってMySQLにSSL接続

MDB2を使ってMySQLにSSL接続

EC-CUBEの開発フォーラムに面白い質問があったので調べてみました

結論から書くとMySQLでは一応出来るみたい

~~~
‘mysqli’,
‘username’ => ‘someuser’,
‘password’ => ‘apasswd’,
‘hostspec’ => ‘localhost’,
‘database’ => ‘thedb’,
‘key’ => ‘client-key.pem’,
‘cert’ => ‘client-cert.pem’,
‘ca’ => ‘cacert.pem’,
‘capath’ => ‘/path/to/ca/dir’,
‘cipher’ => ‘AES’,
);

$options = array(
‘ssl’ => true,
);

// 同じ DSN で接続した既存のインスタンスを取得します。
// 存在しない場合は MDB2::factory() で新しいインスタンスを作成します。
$mdb2 =& MDB2::singleton($dsn, $options);
if (PEAR::isError($mdb2)) {
die($mdb2->getMessage());
}
~~~

Manual :: データベースへの接続および接続の解除

EC-CUBE的にはSC_Query.phpを修正すればたぶん行けますね
互換性を考えるならSC_Query_Ex.phpを直すといいと思います

~~~
public function __construct($dsn = ”, $force_run = false, $new = false)
{
if ($dsn == ”) {
$dsn = array(‘phptype’ => DB_TYPE,
‘username’ => DB_USER,
‘password’ => DB_PASSWORD,
‘protocol’ => ‘tcp’,
‘hostspec’ => DB_SERVER,
‘port’ => DB_PORT,
‘database’ => DB_NAME
);
}

// オプション
$options = array(
// 持続的接続
‘persistent’ => PEAR_DB_PERSISTENT,
// Debugモード
‘debug’ => PEAR_DB_DEBUG,
‘ssl’ => true, // ここを追加
);
~~~

自分が使うことはないだろうけど一応記録しておきますφ(`д´)