2015-12-27 10 views
5

सारांश: Google क्लाउड एसक्यूएल द्वारा प्रदान किए गए स्व-हस्ताक्षरित प्रमाणपत्रों का उपयोग करते समय PHP त्रुटि देता है।एसएसएल स्व-हस्ताक्षरित प्रमाणपत्र PHP के साथ MySQL के साथ कनेक्ट करने के लिए PHP

विवरण: मैं Google क्लाउड SQL के mysql उदाहरण PHP के mysqli लाइब्रेरी का उपयोग करने के लिए कनेक्ट करने के लिए कोशिश कर रहा हूँ।

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

के रूप में मैं समझता हूँ कि गूगल बादल जहाँ मैं क्लाइंट-key.pem, ग्राहक cert.pem, सर्वर-ca.pem फ़ाइलों को डाउनलोड से, स्व-हस्ताक्षरित प्रमाण पत्र की अनुमति देता है।

मैं जब प्रमाण पत्र मान्य PHP से निम्न त्रुटि मिलती है:

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

मेरे शोध के आधार पर अब तक, ऐसा लगता है मैं Verify_Peer जांच, जो जाहिरा तौर पर पीएचपी की अनुमति नहीं है निष्क्रिय करने के लिए एक तरह से की जरूरत है। क्या आप कृपया इसे सत्यापित कर सकते हैं और/या PHP से Google क्लाउड एसक्यूएल के साथ एसएसएल का उपयोग करने का तरीका प्रदान कर सकते हैं?

धन्यवाद।

+0

मैं कुछ इस तरह रहा हूँ (http://stackoverflow.com/questions/8443618/disable-certificate-verification-in-php-soapclient), लेकिन mysql के लिए। धन्यवाद! – user3376563

+0

क्या आप [कमांड लाइन 'mysql' क्लाइंट] (https://cloud.google.com/sql/docs/mysql-client#connect-ssl) का उपयोग कर SSL के साथ कनेक्ट करने में सक्षम हैं? – Nick

उत्तर

1

ऐसा लगता है कि PHP में 2 प्रासंगिक बग अभी भी पूरी तरह हल नहीं हैं: #68344 और #71003

0

दुर्भाग्य से, यह अभी तक संभव नहीं है। PHP एक लुकअप करता है और परिणाम स्व-हस्ताक्षरित प्रमाणपत्र से मेल नहीं खाता है। एक में नाम होगा और दूसरे में आईपी होगा।

, कोई रास्ता नहीं है [वर्तमान] पीएचपी इस पर ध्यान न दें, तो इसके इस उदाहरण में जोड़ने के लिए नहीं है SSL के माध्यम से, संभव नहीं है।

0

आप बदलना

$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 मूल चालक और MySQL 5.6 या बाद में इंस्टॉलेशन के लिए है।

आशा है कि इससे मदद मिलेगी।

संबंधित मुद्दे