У меня проблема с MySQL на PHP 5.6, и после трех дней отладки PHP, OpenSSL, MySQLnd Drivers на PHP и тестирования mysql_client на машине Ubuntu 14.04, я пришел к вывод: SSL-сертификаты Google Cloud SQL не будут работать на PHP 5.6 и выше.Google Cloud SQL SSL не удалось проверить сертификат одноранговой сети
Для начала облако Google - отличный сервис, и современная криптография применяется во всей экосистеме Google. Однако я не мог использовать его из-за одной небольшой проблемы: сертификаты Google Cloud SQL SSL Server не имеют общих имен.
Google Cloud SQL Server (или равный) сертификаты имеют общее имя (CN), который выглядит примерно так:
CN=project-name:instance-id
В довершение, начиная с PHP 5.6, все зашифрованные клиентские потоки будут проходить обязательный проверка сертификата партнера. (Ссылка: OpenSSL changes in PHP 5.6.x). Я использую расширение объектов данных PHP (PDO), которое использует собственный драйвер MySQLnd для обработки всего бизнеса MySQL. Для обработки этих соединений используются собственные потоки PHP.
Я просматривал исходный код MySQLnd на PHP (ссылка: MYSQLnd Driver Code on GitHub), параметры конфигурации MySQLnd, чтобы попытаться отключить код проверки подлинности SSL на этом конкретном MySQLND. Но безрезультатно.
Поэтому, что мне делать, если мне нужно использовать SSL для соединений MySQL на PHP 5.6?
Ваш отзыв очень ценится!
В http://php.net/manual/en/migration56.openssl.php вы можете найти " Все потоковые клиентские потоки теперь позволяют проверять сверку по умолчанию »и« Хотя это и не рекомендуется в целом, можно отключить проверку сертификатов однорангового узла для запроса, установив параметр контекста verify_peer в FALSE и отключить проверку имени пэра, установив параметр контекста verify_peer_name to FALSE ", не могли бы вы попробовать, чтобы посмотреть, работает ли это для вас? – Mario
Привет Марио, спасибо за ваш ответ. Я использую PDO PHP для обработки транзакций с базами данных. Согласно [PHP PDO_MYSQL документации драйвера] (http://php.net/manual/en/ref.pdo-mysql.php), существуют опции для CA, Client cert и key. Не существует опции для проверки SSL. PDO_MYSQL использует mysqlnd, а [mysqlnd использует собственные php-потоки] (http://php.net/manual/en/mysqlnd.notes.php).Это означает, что в соответствии с приведенной выше ссылкой на исходный код (код драйвера MySQLnd ...) они обрабатывают его внутренне. Я не мог найти способ изменить параметр контекста verify_peer_name, не входя в PHP-источник afaik ... – watonlyme
Связано: http://stackoverflow.com/q/28777416/3645370 – David