Исключение PDO при соединении MariaDB, сертификат равноправного узла не совпадает - PullRequest
0 голосов
/ 21 июня 2019

Я получаю исключение PDO при попытке подключиться к базе данных Azure MariaDB через SSL.

Проблема связана с тем, что сертификат однорангового узла не соответствует имени хоста, к которому я подключаюсь.

Я исследовал проблему в максимально возможной степени. Следующие ссылки соответствуют моей проблеме:

https://github.com/MicrosoftDocs/azure-docs/issues/24210#issuecomment-465256195 https://stackoverflow.com/a/44065629

Я могу подключиться, если я изменю имя хоста на cr1.ukwest1-a.control.database.windows.net, однако это не приемлемый обходной путь. Отключение SSL не является опцией, равно как и отключение одноранговой проверки.

Параметры подключения к базе данных Lumen.

    'connections' => [
        'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => array_filter([
                PDO::MYSQL_ATTR_SSL_CA => storage_path('BaltimoreCyberTrustRoot.crt.pem')
            ]),
        ],
    ],

Исключение PDO, сообщенное Lumen.

PDO::__construct(): Peer certificate CN=`cr1.ukwest1-a.control.database.windows.net' did not match expected CN=`jay-mariadb-staging.mariadb.database.azure.com'

Редактировать

Я попытался вручную подключиться с помощью PDO, а не полагаться на классы Lumens. Это приводит к тому же сообщению об ошибке.

$options = array(
    PDO::MYSQL_ATTR_SSL_CA => storage_path('BaltimoreCyberTrustRoot.crt.pem')
);
$db = new PDO('mysql:host=jay-mariadb-staging.mariadb.database.azure.com;port=3306;dbname=azure', username@jay-mariadb-staging', password, $options);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...