php-MySQLi在使用SSL时默认会验证服务器证书吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-MySQLi在使用SSL时默认会验证服务器证书吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1728字,纯文字阅读大概需要3分钟。
内容图文
![php-MySQLi在使用SSL时默认会验证服务器证书吗?](/upload/InfoBanner/zyjiaocheng/883/ab43408378334fa094bc0f9a81bfdd3c.jpg)
这通常是我使用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::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不起作用.
它是一个未使用的常量.我刚刚通过扫描source code进行了验证.
因此,您的问题仍然存在:MySQLi连接是否默认检查服务器证书?
简短的回答:是的.
长答案:尽管证书与普遍信任的Certificate Authorities列表不匹配,但仍会在建立连接时验证提供的CA(即使是自签名的),以缓解MITM-attacks.
从工程角度回答
当连接到MySQL服务器时,我根本不建议使用SSL连接,因为它们会增加一些缺点(加密,带宽,解密,增加的内存使用量,增加的总体往返时间).如果服务器在设计上必须位于本地网络之外,则更好的方法是在受信任的本地网络内进行连接或使用某种类型的经过身份验证的SOAP接口来检索和操作数据(在这种情况下,设计似乎是错误的).
内容总结
以上是互联网集市为您收集整理的php-MySQLi在使用SSL时默认会验证服务器证书吗?全部内容,希望文章能够帮你解决php-MySQLi在使用SSL时默认会验证服务器证书吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。