簡體   English   中英

在啟用 Argon2 的 Amazon Linux 2 上安裝 PHP

[英]Installing PHP on Amazon Linux 2 with Argon2 Enabled

我在為密碼散列啟用 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) 接下來,我根據教程的推薦安裝更多依賴項。 它們是: - argon2 - libargon2-0 - libargon2-0-dev

這確實為我提供了可以工作的 cli 工具argon2 ,但是再次編譯 PHP 不會出現相同的錯誤。

目前我不確定我的下一步是什么,任何幫助將不勝感激。

我在運行 PHP72 的 Cloud9 EC2 實例上嘗試安裝 LexikJWTAuthenticationBundle 時收到Argon2i not supported..錯誤。 經過大量研究,我想出了一個解決方案。

以下是要遵循的步驟。

安裝 libsodium:

$ sudo yum install libsodium-devel

安裝后,如果您運行此命令來查看您的 PHP 模塊,您會期望看到列出的 libsodium,但它不在那里。

$ php -m 

該包實際上安裝為 sodium.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 應用程序。 因此,如果您對上述內容有任何疑問,我可能無法提供幫助……但我會盡力;)

我能夠解決這個問題。 我創建了一個新的 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

sudo yum install -y libargon2 libargon2-devel

這對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM