Я использую MySQL 5.7.17 на AWS RDS.
Я столкнулся со странным поведением и ищу объяснение. Вкратце: я пытаюсь подключиться через SSL, с настройками, которые, по моему мнению, должны вызывать соединение с FAIL , но это удается!
Следующий код PHP успешно подключается к RDS экземпляр по SSL:
<?
$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. Таким образом, похоже, что этот вариант имеет некоторое влияние.
Мой вопрос: как это получается?