这是我通常使用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
);
据我了解,
MYSQLI_CLIENT_SSL
标志是必要的,以使mysqli::real_connect
使用SSL连接到服务器。今天我偶然发现
mysqli::options
的文档,注意到它接受MYSQLI_OPT_SSL_VERIFY_SERVER_CERT
作为选项,但是描述为空。那么,我想知道:
- 何时需要添加
mysqli_options($db, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);
? - 何时需要使用
MYSQLI_CLIENT_SSL
标志? - 什么时候需要同时设置它们两个?
mysqli_ssl_set(...)
,相反,我添加了一个自签名的 CA 证书到/usr/local/share/ca-certificates/
,并运行sudo update-ca-certificates
将我的自签名证书添加到受信任的存储中。那么我可以将MYSQLI_OPT_SSL_VERIFY_SERVER_CERT
设置为true
吗? - Fluxsudo update-ca-certificates
。这不是一个好主意。 - Alexander YancharukMYSQLI_OPT_SSL_VERIFY_SERVER_CERT
默认设置为true
吗? - FluxMYSQLI_OPT_SSL_VERIFY_SERVER_CERT
的信息? - Flux