Включить проверку сертификата TLS для AWS RDS MySQL - PullRequest
2 голосов
/ 31 января 2020

Я использую 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. Таким образом, похоже, что этот вариант имеет некоторое влияние.

Мой вопрос: как это получается?

...