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

时间:2016-01-26 00:24:26

标签: ssl mysqli

我正在连接到我的mysql数据库,如下所示:

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

  

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

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

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

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

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

      $ mysqli =新的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(视蛋白2),但是根据项目的规模和时间,我们需要选择选项1。

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


  • 搜索:
      

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

  • 替换:
      

    mysqli_real_escape_string($ 1,$ 2)


  • 搜索:
      

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

  • 替换:
      

    mysqli_query($ 1,$ 2)


也可以遵循上述格式来更改用于mysqli程序的另一个mysqli oop函数。希望这对某人有帮助,谢谢。