Php 为AWS RDS MySQL启用TLS证书验证

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

我在AWS RDS上使用MySQL 5.7.17

我遇到了一个奇怪的行为,我正在寻找一个解释。 简而言之:我尝试通过SSL进行连接,我认为这些设置会导致连接失败,但成功了

以下PHP代码通过SSL成功连接到RDS实例:

<?
$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
        )

)