通过PHP使用SSL连接MySQL

3
我正在编写我的第一个脚本,该脚本将通过SSL连接到MySQL数据库。我已经阅读了很多相关内容,并找到了许多设置选项;有些适用于我的情况,而有些则不适用。我的情况如下:
MySQL服务器位于与脚本相同的机器上。我的SSL证书已安装。只需使用以下代码通过使用SSL的页面连接到数据库是否安全?
Connecting via https://www.mysitehere.com/myscript.php

$con = mysql_connect("localhost", "username", "password", MYSQL_CLIENT_SSL);
if (!$con) {die('Could not connect: ' . mysql_error());}
mysql_select_db("my_database", $con);

3
我可以理解远程连接的必要性,但为什么你需要 SSL 来进行 本地 连接呢?你不是更倾向于通过套接字进行连接吗?我不确定我是否理解了。 - Pekka
哦,你的意思是我不需要MYSQL_CLIENT_SSL。 - Marcus
2
通常情况下,如果您的服务器与客户端在同一台机器上,则没有太多理由使用SSL——就像您的流量并没有经过不安全/不受信任的链接一样,并且它会增加计算开销。 - Alex Howansky
3
我看不出有什么理由。如果你的计算机遭受了中间人或其他攻击,那么它已经无法挽救了。 - Pekka
1个回答

1
MySQL服务器在同一台机器上作为脚本。我的SSL证书已安装。仅通过使用以下代码和SSL连接到数据库的页面是否安全?
如果您控制服务器(VPS),并且PHP与MySQL位于同一台机器上(只需允许来自同一台机器的连接),则使用SSL连接MySQL是无意义的,只会导致额外开销。您应该只是使用防火墙保护MySQL,就像您也应该保护memcached一样
否则,您可以阅读此处MySQL中的配置SSL部分。我认为这涉及比只有$con = mysql_connect("localhost", "username", "password", MYSQL_CLIENT_SSL);更多的设置。例如,您需要配置您的SSL证书
mysqld --ssl-ca=ca-cert.pem \
       --ssl-cert=server-cert.pem \
       --ssl-key=server-key.pem

SSL加密传输的数据,因此在拦截时更安全,仅设置防火墙无法实现此功能。在理想的情况下,您应该同时拥有两者。 - James William

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接