我正在像这样连接到我的 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):
- 将 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');
- 改为使用 PDO
- 不要使用 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/