SSL-самоподписанные сертификаты для подключения к Mysql с PHP

Описание: PHP дает ошибку при использовании самозаверяющих сертификатов, предоставляемых Google Cloud SQL.

Подробности: Я пытаюсь подключиться к экземпляру mysql Google Cloud SQL, используя библиотеку mysqli от PHP.

$db = mysqli_init(); mysqli_options ($db, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true); $db->ssl_set('client-key.pem', 'client-cert.pem', 'server-ca.pem', NULL, NULL); $query = mysqli_real_connect ($db, $host, $user, $pass, $dbname, 3306, NULL, MYSQLI_CLIENT_SSL); 

Насколько я понимаю, облако Google позволяет использовать самозаверяющие сертификаты, откуда я загрузил файлы client-key.pem, client-cert.pem, server-ca.pem.

При проверке сертификата я получаю следующую ошибку от PHP:

 mysqli_real_connect(): Peer certificate CN=`<project_name>' did not match expected CN=`<db_IP>' 

Основываясь на моих исследованиях, кажется, мне нужен способ отключить проверку Verify_Peer, которая, по-видимому, не позволяет PHP. Можете ли вы подтвердить это и / или предложить способ использования SSL с Google Cloud SQL с PHP?

Спасибо.

Похоже, что 2 соответствующих ошибки в PHP все еще не полностью решены: # 68344 и # 71003 .

К сожалению, это пока невозможно. PHP выполняет поиск, и результат не будет соответствовать самозаверяющему сертификату. Один будет содержать имя, а другой будет содержать IP.

Нет никакого способа [в настоящее время], чтобы PHP игнорировал это, поэтому подключение в этом случае через SSL невозможно.

вам нужно заменить

 $query = mysqli_real_connect ($db, $host, $user, $pass, $dbname, 3306, NULL, MYSQLI_CLIENT_SSL); 

С

 $query = mysqli_real_connect ($db, $host, $user, $pass, $dbname, 3306, NULL, MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT); 

он похож на MYSQLI_CLIENT_SSL, но отключает проверку предоставленного SSL-сертификата. Это только для установок с использованием MySQL Native Driver и MySQL 5.6 или новее.

Надеюсь, это поможет.