这是我通常使用 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 https://secure.php.net/manual/en/mysqli.real-connect.php使用 SSL 连接到服务器。
今天我偶然发现了文档mysqli::options https://secure.php.net/manual/en/mysqli.options.php,并注意到它接受MYSQLI_OPT_SSL_VERIFY_SERVER_CERT
作为一个选项,但是,唉,它的描述是空白的。所以,我想知道:
- 我什么时候需要添加
mysqli_options($db, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);
?
- 我什么时候需要使用
MYSQLI_CLIENT_SSL
flag?
- 我什么时候需要同时设置它们?
MYSQLI_OPT_SSL_VERIFY_SERVER_CERT
(true) 当您想要根据知名机构验证服务器证书以确保这是与受信任主机的连接时使用。如果服务器上有自签名证书,请勿使用它。
MYSQLI_CLIENT_SSL
当您需要加密连接时必须始终使用。
当您拥有权威机构提供的 mysql-server 证书并希望加密时 +MITM 攻击 https://stackoverflow.com/questions/14907581/ssl-and-man-in-the-middle-misunderstanding保护同时使用MYSQLI_OPT_SSL_VERIFY_SERVER_CERT
and MYSQLI_CLIENT_SSL
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)