MySQLi verifica os certificados do servidor por padrão ao usar SS
É assim que costumo me conectar a um banco de dados MySQL usando SSL:
$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
);
Ao ler a documentação do PHP paramysqli::options
, Notei a existência doMYSQLI_OPT_SSL_VERIFY_SERVER_CERT
, que eu assumo ser uma opção para fazer o MySQLi verificar o certificado do servidor. Infelizmente, não há descrição deMYSQLI_OPT_SSL_VERIFY_SERVER_CERT
na documentação. A existência dessa opção me faz pensar se estive conectando ao MySQL de maneira insegura. Agora, estou pensando se a maneira correta de conectar-se ao MySQL com segurança é assim:
$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
);
Então, minhas perguntas são:
ÉMYSQLI_OPT_SSL_VERIFY_SERVER_CERT
definido comotrue
por padrãoO queMYSQLI_OPT_SSL_VERIFY_SERVER_CERT
Faz? (citações, por favor) Qual é a maneira (segura) adequada de conectar-se a um banco de dados MySQL remoto usando o MySQLi?(Nota: esta é uma pergunta de acompanhamento em Qual é a diferença entre MYSQLI_CLIENT_SSL e MYSQLI_OPT_SSL_VERIFY_SERVER_CERT?)