php - 为 Mysqli 新连接设置 SSL 证书位置

标签 php ssl mysqli

我正在像这样连接到我的 mysql 数据库:

$mysqli = new mysqli('76.65.87.64', 'user', 'my_password', 'my_db');

我有 3 个证书用于安全的 SSL 连接。

如何在此连接中使用它们?

最佳答案

我把这个答案放在这里是因为我也遇到了同样的问题但是已经深陷兔子洞了......

就我而言,我正在维护一个遗留的 PHP 服务器,它像 OP 一样使用 oop 格式的 mysqli

$mysqli = new mysqli('123.123.123.123', 'user', 'my_password', 'my_db');

现在要求为此类连接添加SSL/TLS

我在互联网上搜索了 mysqli oop 格式和 ssl 功能,遗憾的是似乎无法做到。

要添加 SSL/TLS,有几个选项可供选择(我选择选项 1):

  1. 将 mysqli 从 oop 格式更改为过程格式,并以这种方式添加 SSL
    • 来自

      $mysqli = new mysqli('123.123.123.123', 'user', 'my_password', 'my_db');

            $mysqli  = mysqli_init();
            $mysqli->options(MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);
            $mysqli->ssl_set(NULL, NULL, "xxx.crt", NULL, NULL);
            $mysqli->real_connect('123.123.123.123', 'user', 'my_password', 'my_db');
  1. 改为使用 PDO
  2. 不要使用 SSL(不是最好的选择)

我认为理想的方法是迁移到 PDO(optoins 2),但根据项目的规模和给定的时间,我们需要选择选项 1。

为此,我们可以使用 Regex 进行批量搜索和替换(我使用 Visual Studio Code 进行搜索和替换):


  • 搜索:

    (\$[^-]+)->real_escape_string(([^)]+))

  • 替换:

    mysqli_real_escape_string($1,$2)


  • 搜索:

    (\$[^-]+)->query(([^)]+))

  • 替换:

    mysqli_query($1,$2)


一个人也可以按照上面的格式来改变其他mysqli oop函数用于mysqli程序。希望这对某人有所帮助,谢谢。

关于php - 为 Mysqli 新连接设置 SSL 证书位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35005004/

相关文章:

php - 获取 TYPO3 Extbase mm 关系计数

php - 如何解决 Laravel 安装上 MAC OS 上的 curl 证书问题?

ssl - 读取 X.509 key 或证书文件时出错 : Error in parsing

php - 无法连接到 ssl

php - mysqli准备语句缓冲数据与非缓冲数据性能?

php - 如何使用 SplFileObject 获取行数?

php - 违反直觉的 preg_match 行为 - 匹配一系列字符的最简洁的方法是什么?

testing - 认证测试服务器

php - 为什么我的 PDO 总是出现 bool 错误?

PHP - 将 SQL GROUP BY 作为数组返回?