为AWS RDS MySQL启用TLS证书验证

时间:2020-01-31 18:14:49

标签: php mysql ssl amazon-rds

我在AWS RDS上使用MySQL 5.7.17。

我遇到了奇怪的行为,我正在寻找解释。 简而言之:我尝试通过SSL进行连接,并使用我认为应该导致连接 FAIL 的设置,但设置成功!

以下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);

我得到的结果:

Array
(
    [0] => Array
        (
            [Variable_name] => Ssl_cipher
            [Value] => AES256-SHA
        )

)

我还在pem中找到了三个/etc/ca-certificates/rds-mysql文件。我以为PHP可能出于某种原因会去那里,所以我删除了它们,但是SSL连接仍然成功。

注意:如果我删除显示$options[PDO::MYSQL_ATTR_SSL_CA] = "LITERALLY THIS TEXT. DEFINITELY NOT A CERTIFICATE!";的行-它不会通过SSL连接。因此看来,该选项确实有一定影响。

我的问题是:它如何成功?

0 个答案:

没有答案