使用PHP / MySQLI / Apache时,在哪里安全地存储证书/密钥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用PHP / MySQLI / Apache时,在哪里安全地存储证书/密钥?相关的知识,希望对你有一定的参考价值。

我有单独的web(Apache / php)和数据库(mysql)服务器使用mysqli通过SSL连接很好地工作。在框架内的数据库连接库中的ssl_set()函数中,我可以指定keys / pem文件的路径,只要它在docroot中。如果文件在docroot之外,我显然无法访问它们,并且连接失败。

在apache docroot之外存储和访问mysql客户端ssl密钥的最安全方法是什么?

是否安全使用“ini_set”,我可以“动态”允许访问,然后删除该参数?或者我应该使用符号链接?

我在这里寻找最好的做法。我想这个问题不仅限于证书密钥,但我想确保您了解我的具体用例。

谢谢!

答案

我在这里寻找最好的做法。我想这个问题不仅限于证书密钥,但我想确保您了解我的具体用例。

这个问题进入了安全专家将针对不同威胁模型进行权衡的分支,因此对于安全凭证管理没有“一个正确的答案”。但是,有很多明显错误的答案。

Chris Cornutt发表了一篇关于securing PHP credentials with Docker的文章,我强烈建议您阅读有关解决凭据管理所涉及的威胁和策略的背景信息。

通常,psecio/secure_dotenv将为大多数用户解决此问题。这是一个开源库,用于管理在休息时加密存储的凭据。

如果您需要更高级的东西(或与产品集成,例如Vault),您可能需要请安全专家审核您的设计和实施。

以上是关于使用PHP / MySQLI / Apache时,在哪里安全地存储证书/密钥?的主要内容,如果未能解决你的问题,请参考以下文章

PHP Apache 在执行存储过程时崩溃

Windows 10/Apache24/PHP 7.4.19 未加载 mysqli

缺少 mysqli 扩展.请检查 PHP 配置?

缺少 mysqli 扩展。请检查您的 PHP 配置,Windows 7 [关闭]

找不到“mysqli”类

Ubuntu 16.04.4 LTS环境中php7.0使用mysqli失败,数据库无法访问