这是我通常使用 SSL 连接到 MySQL 数据库的方式:
$db = mysqli_init();
mysqli_ssl_set(
$db,
NULL,
NULL,
'/etc/ssl/my-certs/ssl-ca.crt.pem',
NULL,
NULL
);
mysqli_real_connect(
$db,
'db.example.com',
'john',
'123456',
NULL,
NULL,
NULL,
MYSQLI_CLIENT_SSL
);
当阅读 PHP 文档时mysqli::options,我注意到了MYSQLI_OPT_SSL_VERIFY_SERVER_CERT
选项,我认为这是一个让 MySQLi 验证服务器证书的选项。不幸的是,没有描述MYSQLI_OPT_SSL_VERIFY_SERVER_CERT
在文档中。这个选项的存在让我怀疑我是否一直在不安全地连接MySQL。现在我想知道安全连接MySQL的正确方法是否是这样的:
$db = mysqli_init();
mysqli_options($db, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true); // <- Attention.
mysqli_ssl_set(
$db,
NULL,
NULL,
'/etc/ssl/my-certs/ssl-ca.crt.pem',
NULL,
NULL
);
mysqli_real_connect(
$db,
'db.example.com',
'john',
'123456',
NULL,
NULL,
NULL,
MYSQLI_CLIENT_SSL
);
所以,我的问题是:
- Is
MYSQLI_OPT_SSL_VERIFY_SERVER_CERT
set to true
默认情况下?
- 什么是
MYSQLI_OPT_SSL_VERIFY_SERVER_CERT
做? (请引用)
- 使用 MySQLi 连接到远程 MySQL 数据库的正确(安全)方法是什么?
(注:这是一个后续问题MYSQLI_CLIENT_SSL 和 MYSQLI_OPT_SSL_VERIFY_SERVER_CERT 有什么区别?)