首页  >  文章  >  数据库  >  如何使用 PHP 中的 SSL 安全连接到远程 MySQL 服务器?

如何使用 PHP 中的 SSL 安全连接到远程 MySQL 服务器?

Barbara Streisand
Barbara Streisand原创
2024-11-19 18:43:031052浏览

How Can I Securely Connect to a Remote MySQL Server Using SSL from PHP?

从 PHP 使用 SSL 连接到远程 MySQL 服务器

提出的问题涉及使用 SSL 与远程 MySQL 服务器建立安全连接PHP。使用 mysql_connect 的原始代码片段会产生“SSL 连接错误”。

了解问题

要深入研究根本原因,请考虑以下内容:

  • 与旧版 mysql_connect 扩展相比,MySQLi(MySQL 改进扩展)为加密连接提供了卓越的支持。
  • 为了优化安全性,MySQL 配置应包括:

    • [客户端]

      • ssl-ca = /etc/mysql/ssl/ca-cert.pem
      • ssl-cert = /etc/mysql/ssl/client -cert.pem
      • ssl-key = /etc/mysql/ssl/client-key.pem
  • 安全通信可以也可以通过 PHP 配置:

    • mssql.secure_connection = On in php.ini

MySQLi 解决方案

为了使用 MySQLi 促进 SSL 连接,请利用以下代码:

$db = mysqli_init();
mysqli_options ($db, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);
$db->ssl_set('/etc/mysql/ssl/client-key.pem', '/etc/mysql/ssl/client-cert.pem', '/etc/mysql/ssl/ca-cert.pem', NULL, NULL);
$link = mysqli_real_connect ($db, 'ip', 'user', 'pass', 'db', 3306, NULL, MYSQLI_CLIENT_SSL);

PDO_MYSQL 解决方案

如果必须遵守 PDO_MYSQL,请使用此方法:

$pdo = new PDO('mysql:host=ip;dbname=db', 'user', 'pass', array(
    PDO::MYSQL_ATTR_SSL_KEY    =>'/etc/mysql/ssl/client-key.pem',
    PDO::MYSQL_ATTR_SSL_CERT=>'/etc/mysql/ssl/client-cert.pem',
    PDO::MYSQL_ATTR_SSL_CA    =>'/etc/mysql/ssl/ca-cert.pem'
    )
);

警告

请注意,PDO 的 SSL 支持在 5.3.8 之前的 PHP 版本中受到限制。为了获得最佳功能,请考虑升级到更新的 PHP 版本。

以上是如何使用 PHP 中的 SSL 安全连接到远程 MySQL 服务器?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn