大佬教程收集整理的这篇文章主要介绍了php-MySQLi在使用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
);
当阅读mysqli::options
的PHP文档时,我注意到存在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
);
因此,我的问题是:
>默认情况下,MysqLI_OPT_SSL_VERIFY_SERVER_CERT是否设置为true?
> MysqLI_OPT_SSL_VERIFY_SERVER_CERT做什么? (请引用)
>使用MysqLi连接到远程MysqL数据库的正确(安全)方法是什么?
(注意:这是关于What’s the difference between MYSQLI_CLIENT_SSL and MYSQLI_OPT_SSL_VERIFY_SERVER_CERT?的后续问题)
解决方法:
要求的答案
事实是,MysqLI_OPT_SSL_VERIFY_SERVER_CERT不起作用.
它是一个@R_696_10780@常量.我刚刚通过扫描source code进行了验证.
因此,您的问题仍然存在:MysqLi连接是否默认检查服务器证书?
简短的回答:是的.
长答案:尽管证书与普遍信任的Certificate Authorities列表不匹配,但仍会在建立连接时验证提供的CA(即使是自签名的),以缓解MITM-attacks.
从工程角度回答
当连接到MysqL服务器时,我根本不建议使用SSL连接,因为它们会增加一些缺点(加密,带宽,解密,增加的内存使用量,增加的总体往返时间).如果服务器在设计上必须位于本地网络之外,则更好的方法是在受信任的本地网络内进行连接或使用某种类型的经过身份验证的SOAP接口来检索和操作数据(在这种情况下,设计似乎是错误的).
以上是大佬教程为你收集整理的php-MySQLi在使用SSL时默认会验证服务器证书吗?全部内容,希望文章能够帮你解决php-MySQLi在使用SSL时默认会验证服务器证书吗?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。