Php 为AWS RDS MySQL启用TLS证书验证
我在AWS RDS上使用MySQL 5.7.17 我遇到了一个奇怪的行为,我正在寻找一个解释。 简而言之:我尝试通过SSL进行连接,我认为这些设置会导致连接失败,但成功了 以下PHP代码通过SSL成功连接到RDS实例:Php 为AWS RDS MySQL启用TLS证书验证,php,mysql,ssl,amazon-rds,Php,Mysql,Ssl,Amazon Rds,我在AWS RDS上使用MySQL 5.7.17 我遇到了一个奇怪的行为,我正在寻找一个解释。 简而言之:我尝试通过SSL进行连接,我认为这些设置会导致连接失败,但成功了 以下PHP代码通过SSL成功连接到RDS实例: <? $HOST = "something.amazonaws.com"; $USER = "myuser"; $PASS = "mypass"; $connectionString = "mysql:host={$HOST};charset=utf8"; $option
<?
$HOST = "something.amazonaws.com";
$USER = "myuser";
$PASS = "mypass";
$connectionString = "mysql:host={$HOST};charset=utf8";
$options = [ ];
$options[PDO::MYSQL_ATTR_SSL_CA] = "LITERALLY THIS TEXT. DEFINITELY NOT A CERTIFICATE!";
$options[PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT] = false;
$conn = new \PDO($connectionString, $USER, $PASS, $options);
$sql = "SHOW STATUS LIKE 'Ssl_cipher'";
$stmt = $conn->prepare($sql);
$stmt->execute([ ]);
$stmt->setFetchMode(\PDO::FETCH_ASSOC);
$rows = $stmt->fetchAll();
print_r($rows);
另外,我在/etc/ca-certificates/rds-mysql
中找到了三个pem
文件。我认为PHP可能是出于某种原因,所以我删除了它们,但SSL连接仍然成功
注意:如果我删除了写着“$options[PDO::MYSQL\u ATTR\u SSL\u CA]”的行,则表示“字面上是这个文本,绝对不是证书!”代码>-它不通过SSL连接。因此,这一选择似乎确实产生了一些影响
我的问题是:它是如何成功的?你在传递垃圾,但你也在说“不用费心验证”。您尝试过启用验证吗?@tadman它在启用MYSQL\u ATTR\u SSL\u VERIFY\u SERVER\u CERT时不起作用,但这是客户端验证,对吗?服务器是否也应该进行一些验证?您是否检查了服务器是否设置为验证?我没有检查。我不知道它是可配置的。你知道哪个选项控制它吗?
Array
(
[0] => Array
(
[Variable_name] => Ssl_cipher
[Value] => AES256-SHA
)
)