Php 什么';MYSQLI\u客户端\u SSL和MYSQLI\u选项\u SSL\u验证\u服务器\u证书之间的区别是什么?

Php 什么';MYSQLI\u客户端\u SSL和MYSQLI\u选项\u SSL\u验证\u服务器\u证书之间的区别是什么?,php,mysqli,php-7,Php,Mysqli,Php 7,这是我通常使用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

这是我通常使用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
标志是使用SSL连接到服务器所必需的

今天,我偶然发现了的文档,并注意到它接受
MYSQLI\u OPT\u SSL\u VERIFY\u SERVER\u CERT
作为选项,但遗憾的是,它的描述是空白的。所以,我想知道:

  • 我什么时候需要添加
    mysqli_选项($db,mysqli_OPT_SSL_VERIFY_SERVER_CERT,true)
  • 何时需要使用
    MYSQLI\u CLIENT\u SSL
    标志
  • 我什么时候需要设置它们
  • MYSQLI\u OPT\u SSL\u VERIFY\u SERVER\u CERT
    (true)当您希望根据已知权限验证服务器证书以确保这是到受信任主机的连接时使用。如果服务器上有自签名证书,请不要使用它

  • 当您需要加密连接时,必须始终使用MYSQLI\u CLIENT\u SSL

  • 当您拥有权威机构提供的mysql服务器上的证书并希望加密+保护时,请同时使用
    MYSQLI\u OPT\u SSL\u VERIFY\u server\u CERT
    MYSQLI\u CLIENT\u SSL


  • 假设我省略了
    mysqli\u ssl\u集(…)
    ,而是将自签名CA证书添加到
    /usr/local/share/CA certificates/
    ,然后运行
    sudo update CA certificates
    将自签名证书添加到受信任的存储中。我是否可以将
    MYSQLI\u OPT\u SSL\u VERIFY\u SERVER\u CERT
    设置为
    true
    ?即使使用自签名证书,也可以验证服务器证书,只需将该证书添加到正确的信任存储区即可。“众所周知的权威机构”之所以出名,是因为默认情况下它们位于该信任存储中。@您需要在脚本应该运行的每台主机上运行
    sudo update ca certificates
    。这不是个好主意。默认情况下,
    MYSQLI\u OPT\u SSL\u VERIFY\u SERVER\u CERT
    是否设置为
    true
    ?您从哪里获得有关
    MYSQLI\u OPT\u SSL\u VERIFY\u SERVER\u CERT的信息?