Apache HTTPD 内で PBKDF2 または BCrypt をパスワード ハッシュとして使用する (簡単な) 方法をご存知の方はいませんか。
一般的なシナリオとしては、/private にリソースがあり、それを特定のユーザー グループに制限したいとします。これらのユーザーのパスワードはデータベースに保存され、 を使用して検証されますmod_auth_dbd
。
私は...するだろうのようにSSHA の使用を避けるため。
Apache apr-util には関数apr_password_validate
(現在では好ましくないハッシュ タイプをすべて処理する) があり、apr_crypto_openssl.c にはcrypto_passphrase
PBKDF2 の実装があることがわかります。
誰かがこの 2 つを結合したことがありますか? (または、Apache ドキュメントのどこかで明らかなことを見逃しただけでしょうか?)
答え1
さらに検討してみると、すべてが想像していたよりもずっと簡単だったようです。
HTTPD はシステムが提供する暗号化機能を使用するため、そのモジュール性を活用します。
http://en.wikipedia.org/wiki/Crypt_(Unix)#Modular_crypt.283.29_アルゴリズム
理論的には BCrypt を直接サポートします (ただし、テストは行っていません)。$6 プレフィックスを使用して SHA-512 をテストしました。
したがって、以下のように計算されたパスワードを設定すると、目的の結果が得られます。
salt = 'fGn9LR75';
puts 'quohjo5oor4ac3Deolei'.crypt('$6$' + salt);
=>
"$6$fGn9LR75$juRSrMtKBa8pdZ8tbTouUvDItoF9Fp.LVk8Kqv2ZL5T.R.q/nUQNGePve1Ge/8rDf/xqUwgpY.3F1MQ0qtauf0"
答え2
将来検索する人のために、bcrypt サポートは 2013 年 2 月にリリースされた Apache バージョン 2.4.4 で追加されたことに注意してください。
$ htpasswd -nbB -C 11 ユーザー名 パスワード ユーザー名:$2y$11$p1icdLB/EqI2z2EPt6JrQOUdy1GzHg5GdDWcwdj3MIXJLSkgrILoa