如何通过 SSL 上的 PHP 连接到 Amazon MySQL RDS 实例
Posted
技术标签:
【中文标题】如何通过 SSL 上的 PHP 连接到 Amazon MySQL RDS 实例【英文标题】:How to connect to an Amazon MySQL RDS instance via PHP over SSL 【发布时间】:2011-06-09 09:37:03 【问题描述】:我有一个运行 WordPress 站点的 EC2 实例。 WordPress 数据库位于 RDS 实例上。我想通过 SSL 连接到数据库。
据我了解,WordPress 开箱即用的 mysql 扩展不支持 SSL。所以,我安装了一个使用 MySQLi 的 WordPress 数据库脚本,它支持 SSL。
我遇到的问题是亚马逊只提供一个密钥文件(more info),而我能找到的使用 MySQLi over SSL 的所有示例都至少包括 3 个文件:
$db = mysqli_init();
$db->ssl_set('server-key.pem','server-cert.pem','cacert.pem',NULL,NULL);
我可以从 mysql 命令行应用程序通过 SSL 连接到我的数据库。鉴于我只有 1 个文件,谁能告诉我我需要做什么才能使 php 的 MySQLi 扩展工作?
【问题讨论】:
如果你跳过这些参数会发生什么? 请注意,亚马逊文档指出,同一区域内的流量永远不会离开亚马逊的网络。因此,这包括一个特定区域内所有可用区之间的流量。 另外,“使用 MySQLi 的 WordPress 数据库脚本”的名称/链接是什么?谢谢! 已经有一段时间了,但我相信我按照这些说明修改了 wp-db.php:wordpress.org/support/topic/mysqli 【参考方案1】:事实证明,这并没有我想象的那么复杂。调高错误报告级别会发现我的代码中有一个我没有发现的错误。以这种方式使用 ssl_set 有效:
$db = mysqli_init();
$db->ssl_set(NULL,NULL,'/path/to/mysql-ssl-ca-cert.pem',NULL,NULL);
$db->real_connect($dbhost,$dbuser,$dbpassword,$dbname);
【讨论】:
【参考方案2】:试试这个:
$db = mysqli_init();
$db->ssl_set(null, 'https://rds.amazonaws.com/doc/mysql-ssl-ca-cert.pem', null, null, null);
【讨论】:
以上是关于如何通过 SSL 上的 PHP 连接到 Amazon MySQL RDS 实例的主要内容,如果未能解决你的问题,请参考以下文章
如何创建允许 PHP 通过 SSL 连接到 MySQL 的证书?
使用 PHP 通过 IMAP 连接到 Gmail - SSL 上下文失败
C#:如何在启用 SSL 的情况下连接到 Active Directory?