我在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连接。因此看来,该选项确实有一定影响。
我的问题是:它如何成功?