启用Argon2进行密码哈希处理时遇到问题。我从Amazon Linux 2的源代码构建PHP,但是一旦构建完成并编译了PHP,则PASSWORD_ARGON2I
常量是未定义的,并且该算法不可用。
我尝试了多种不同的方法来使用不同的库来编译PHP,但是没有一种方法可以满足我所需的Argon2算法。下面,我将列出我已采取的一些步骤:
1)给出标志--with-sodium
使用此标志的编译已完成,但是运行包含功能password_hash()
的测试脚本表明Argon2I不可用。
2)使用标志--with-password-argon2
由于缺少库,因此无法编译,可以在以下错误中看到。
checking for Argon2 support... yes
checking for Argon2 library... not found
configure: error: Please ensure the argon2 header and library are installed
据此,我假设我缺少该标志起作用所需的库,因此我已经安装了Libsodium。重试具有相同的结果。
3)接下来,我将根据教程的建议安装更多依赖项。这些是: -氩气2 -libargon2-0 -libargon2-0-dev
这确实给我提供了cli工具argon2
,该工具可以正常工作,但是再次编译PHP不会出现相同的错误。
目前我不确定下一步是什么,任何帮助将不胜感激。
答案 0 :(得分:1)
尝试在运行PHP72的Cloud9 EC2实例上安装LexikJWTAuthenticationBundle时,收到了不支持的Argon2i。错误。 经过大量研究,我想出了一个解决方案。
这是要遵循的步骤。
安装libsodium:
$ sudo yum install libsodium-devel
安装后,如果运行此命令以查看PHP模块,则可能会看到列出了libsodium,但此目录不存在。
$ php -m
该软件包实际上是作为钠.so而不是libsodium.so安装的(也许这是问题的根源?) 要使PHP加载模块,需要一些手动步骤。
转到PHP查找已安装模块的目录。
$ cd /etc/php.d
创建一个指向sodium.so软件包的文件。
$ sudo touch libsodium.ini
授予文件读/写权限。
$ sudo chmod 666 20-libsodium.ini
在编辑器中打开文件。我喜欢使用vim。
$ vi libsodium.ini
单击“ i”键进入插入模式,然后粘贴以下内容:
; Enable sodium extension module
extension=sodium.so
通过单击退出键并键入以下内容来保存文件:
:wq!
现在,如果通过键入php -m查看已安装的PHP模块,则会看到列出的libsodium。
这时,您应该能够运行抛出Argon2i错误的任何内容。
仅供参考,我既不是PHP开发人员,也不是AWS专家,但是我必须努力在EC2上部署公司PHP应用程序。因此,如果您对上述内容有任何疑问,我可能无法提供帮助。.但我会尝试;)
答案 1 :(得分:0)
我能够解决此问题。我创建了一个新的AWS Amazon Linux 2实例,并遵循以下步骤:
安装Argon2
sudo -s
git clone https://github.com/P-H-C/phc-winner-argon2.git
cd phc-winner-argon2
make
make test
make install PREFIX=/usr
cp /usr/lib/libargon2.so.1 /lib64/
导航回到父目录
cd ..
安装PHP 7.3.5
wget https://www.php.net/distributions/php-7.3.5.tar.gz
tar -zxvf php-7.3.5.tar.gz
cd php-7.3.5
./configure --with-password-argon2
make
make test
make install
exit
导航回到父目录
cd ..
检查您的PHP版本
php --version
创建以下PHP脚本(pwd.php)。
<?php
error_reporting(E_ALL);
$hash = \password_hash('password', PASSWORD_ARGON2ID);
echo "$hash\n";
?>
执行PHP脚本以测试Argon2功能
php pwd.php
您将收到类似以下内容的输出:
$argon2id$v=19$m=1024,t=2,p=2$dlB2SWdpUEFYZE9RSWNmQg$JGWNTXEomWX1hyM8OfzkRNx5C3zmBu3sqKU1hwohNOU
答案 2 :(得分:0)
sudo yum install -y libargon2 libargon2-devel
这对我有用。