Можно ли подключить PHP PDO к удаленному MySQL по SSL, но без сертификата клиента? - PullRequest
0 голосов
/ 22 февраля 2019

Если я правильно понимаю, удаленный сервер MySQL имеет сертификат сервера для аутентификации клиента и шифрования соединения.И клиент может иметь сертификат клиента для аутентификации на сервере, но если мне не нужно аутентифицировать клиента на сервере, потому что мне нужно только шифрование, могу ли я опустить сертификат клиента при создании соединения PDO.

И что такоесинтаксис для этого, например, $ con = new PDO ('mysql: host = someHost; dbname = someDB; port = 3306', $ user, $ pass);
Где указать, что я хочу SSL, но без сертификата клиента

1 Ответ

0 голосов
/ 23 февраля 2019

Вот как мне удалось соединиться с PDO

$conn = new PDO('mysql:host=myServer;dbname=MyDb',
                $user,
                $pass,
                array(PDO::MYSQL_ATTR_SSL_CA     => '/etc/ssl/certs/anyOneOfTheMilionCertsFromHere.pem',
                      PDO::MYSQL_ATTR_SSL_CAPATH => '/etc/ssl/certs/')
              );

Я не знаю, почему, но он не работает, если я не указываю .pem файл в "PDO :: MYSQL_ATTR_SSL_CA", это может бытьлюбой файл .pem, например Deutsche_Telekom_Root_CA_2.pem, Baltimore_CyberTrust_Root.pem, ... он будет работать.

И вот как мне удалось сделать это с MYSQLI, просто изящно сообщив, что я хочу SSL с константой«MYSQLI_CLIENT_SSL», без указания какого-либо случайного безумного файла .pem

$mi = mysqli_init();
$conn = mysqli_real_connect($mi, $server, $user, $pass, $db, 3306, NULL, MYSQLI_CLIENT_SSL) or die(mysqli_connect_error());

Можно ли это сделать с помощью PDO (как обычно) без явного указания файла .pem?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...