2015-12-27 10 views
5
ile MySQL ile bağlanmak için

Özet: Google Cloud SQL tarafından sağlanan kendinden imzalı sertifikalar kullanırken PHP hata veriyor.SSL PHP

Detayları: PHP'nin mysqli kütüphanesini kullanarak Google Cloud SQL'ın MySQL örneğine bağlanmaya çalışıyorum.

$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); 

Ben Google bulut anlamak gibi

ben istemci key.pem, istemci cert.pem, sunucu ca.pem indirilen dosyalar yerden, kendinden imzalı sertifikalar verir. sertifikayı doğrulanırken

PHP'den aşağıdaki hatayı alıyorum: benim araştırmalara dayanarak

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

şimdiye kadar, öyle görünüyor

Ben görünüşte PHP izin vermez verify_peer çek, devre dışı bırakmak için bir yol gerekir. Bunu doğrulamak ve/veya SSL'yi Google'dan PHP kullanarak Google Cloud SQL ile kullanmanın bir yolunu sunabilir misiniz?

Teşekkür ederiz.

+0

böyle bir şey arıyorum (http://stackoverflow.com/questions/8443618/disable-certificate-verification-in-php-soapclient) ancak mysql için. Teşekkürler! – user3376563

+0

Eğer (https://cloud.google.com/sql/docs/mysql-client#connect-ssl) [komut satırı 'mysql' istemci kullanarak SSL ile bağlanmak] yapabiliyor musunuz? – Nick

cevap

1

PHP'deki 2 ilgili hatanın hala tamamen çözülmediğine benziyor: #68344 ve #71003.

0

Maalesef bu henüz mümkün değildir. PHP bir arama yapar ve sonuç kendinden imzalı sertifikayla eşleşmez. Biri adı içerecek ve diğeri IP'yi içerecektir.

SSL aracılığıyla, mümkün değildir, PHP bunu gözardı, bunun bu durumda bağlantı olması [şu anda] bir yolu yoktur.

0

Eğer

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

o MYSQLI_CLIENT_SSL gibi, ama sağlanan SSL sertifikasının doğrulama devre dışı bırakır ile

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

değiştirin gerekir. Bu sadece MySQL Native Driver ve MySQL 5.6 veya daha sonraki sürümleri kullanan kurulumlar içindir.

Yardım edin.