PHP Mysql进程间TLS

时间:2017-05-15 18:56:02

标签: php mysql ssl sysadmin

我对sysadmin工作的深度相当新,特别是在这个级别,并且已经负责建立一个“行业标准”方式来验证PHP应用程序和MySQL数据库服务器之间的进程间通信。

我似乎无法在mysql或PHP文档中找到任何引用。我已经在PHP和Mysql之间找到了大量关于加密目的的标准TLS的信息,但是对于相互身份验证(在Mysql中验证PHP应用程序)绝对没有。是否可以使用或不使用自定义插件?

2 个答案:

答案 0 :(得分:2)

TLS仅确保人们无法剥夺您的凭据并且#34;脱线#34;使用数据包嗅探工具。它无法确保连接到MySQL的设备或应用程序的身份。

对于那种事情,您需要一个额外的层,如SSH,或某种自定义应用程序,在允许通过某种代理通道连接到MySQL之前进行验证。这可能是一项复杂的工作,而且它肯定不是行业标准。

目前的标准非常简单:

  • 通过积极的防火墙规则限制哪些计算机可以访问您的MySQL服务器。端口3306 永远不会对普通互联网开放。至少应将其锁定在少数列入白名单的IP或网络块(如192.168.x.0 / 24)中,用于部分内部专用网络。
  • 如果无法确保MySQL服务器和应用程序之间的连接不安全,请使用TLS或SSH隧道。如果您的服务器位于不同的物理位置,并且无法确保连接安全,则这一点非常重要。
  • 使您的用户名和密码凭据相当复杂,难以暴力破解。由于这些是在应用程序级别配置的,因此60多个字母密码不是问题。使它们变大并完全随机。您永远不需要手动输入这些内容。使用配置文件或密码管理器。

如果您对信誉良好的安全公司有其他疑虑完成审核,以确保您的策略合理。

答案 1 :(得分:0)

有两种常用方法。首先,如果PHP应用程序正确检查了mysql服务器的证书,那么你知道mysql服务器是它声称的那个。这证实了php的mysql。然后,当您发送数据库密码时,您已经将php应用程序验证到了mysql服务器。您在每个方向使用了不同的方法,但实现了相互身份验证。到目前为止,这是最常用的方法,它确实符合相互认证的定义。

不太常见的方法是使用client certificates;请参阅“要求同时使用客户端证书”的文本。 通过使用mysql命令行的--ssl-cert和--ssl-key参数(以及来自php的类似连接参数),您可以向服务器提供客户端证书。服务器的证书用于向php验证服务器,以及用于向服务器验证php的客户端证书。