用于连接 Mysql 和 PHP 的 SSL 自签名证书
SSL self-signed certifications to connect with Mysql with PHP
总结:PHP 使用 Google Cloud SQL.
提供的自签名证书时出错
详细信息:我正在尝试使用 PHP 的 mysqli 库连接到 Google 云 SQL 的 mysql 实例。
$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 云允许自签名证书,我从那里下载了客户端-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 不允许。您能否验证此 and/or 提供了一种将 SSL 与来自 PHP 的 Google Cloud SQL 一起使用的方法?
谢谢。
不幸的是,这还不可能。 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 本机驱动程序和 MySQL 5.6 或更高版本的安装。
希望对您有所帮助。
总结:PHP 使用 Google Cloud SQL.
提供的自签名证书时出错详细信息:我正在尝试使用 PHP 的 mysqli 库连接到 Google 云 SQL 的 mysql 实例。
$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 云允许自签名证书,我从那里下载了客户端-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 不允许。您能否验证此 and/or 提供了一种将 SSL 与来自 PHP 的 Google Cloud SQL 一起使用的方法?
谢谢。
不幸的是,这还不可能。 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 本机驱动程序和 MySQL 5.6 或更高版本的安装。
希望对您有所帮助。