2015-12-27 21 views
5

Tóm tắt: PHP đưa ra lỗi khi sử dụng chứng chỉ tự ký như được cung cấp bởi Google Cloud SQL.Chứng chỉ tự ký SSL để kết nối với Mysql với PHP

Chi tiết: Tôi đang cố gắng kết nối với cá thể mysql của Google Cloud SQL bằng thư viện mysqli của 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); 

Vì tôi hiểu Google cloud cho phép chứng chỉ tự ký, từ đó tôi đã tải xuống tệp client-key.pem, client-cert.pem, máy chủ-ca.pem.

tôi nhận được lỗi sau từ PHP khi chứng thực giấy chứng nhận:

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

Dựa trên nghiên cứu của tôi cho đến nay, có vẻ như tôi cần một cách để vô hiệu hóa Verify_Peer kiểm tra, mà dường như PHP không cho phép. Bạn có thể vui lòng xác thực điều này và/hoặc cung cấp cách sử dụng SSL với Google Cloud SQL từ PHP không?

Cảm ơn bạn.

+0

Tôi đang tìm một cái gì đó như thế này (http://stackoverflow.com/questions/8443618/disable-certificate-verification-in-php-soapclient) nhưng đối với mysql. Cảm ơn! – user3376563

+0

Bạn có thể [kết nối với SSL bằng cách sử dụng dòng lệnh mysql' client] (https://cloud.google.com/sql/docs/mysql-client#connect-ssl) không? – Nick

Trả lời

1

Dường như 2 lỗi liên quan trong PHP vẫn chưa được giải quyết hoàn toàn: #68344#71003.

0

Thật không may, điều này là không thể được nêu ra. PHP thực hiện tra cứu và kết quả sẽ không khớp với chứng chỉ tự ký. Một sẽ chứa tên và cái còn lại sẽ chứa IP.

Không có cách nào [hiện tại] để PHP bỏ qua điều này, do đó kết nối trong trường hợp này, qua SSL, là không thể.

0

bạn cần phải thay thế

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

Với

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

nó là như MYSQLI_CLIENT_SSL, nhưng vô hiệu hóa xác nhận Giấy chứng nhận SSL cung cấp. Điều này chỉ dành cho các cài đặt sử dụng MySQL Native Driver và MySQL 5.6 trở lên.

Hy vọng điều đó sẽ hữu ích.

Các vấn đề liên quan