Кто-нибудь знает (простой) способ использования PBKDF2 или BCrypt в качестве хэша пароля в Apache HTTPD.
Общий сценарий состоит в том, что у меня есть ресурс в / private, который я хотел бы ограничить определенной группой пользователей. Пароли этих пользователей будут храниться в базе данных и проверяться с помощью mod_auth_dbd
.
я буду лайк чтобы уйти от использования SSHA.
Я вижу в Apache apr-util, что есть функция apr_password_validate
(который обрабатывает все типы хэшей, которые сейчас не одобряются); а в apr_crypto_openssl.c есть crypto_passphrase
который является реализацией PBKDF2.
Кто-нибудь сварил их вместе? (или я просто пропустил что-то очевидное где-то в документации Apache?)
Итак, после дальнейшего обзора кажется, что все оказалось намного проще, чем я представлял.
HTTPD использует предоставленную системой функцию шифрования и, таким образом, усиливает ее модульность.
http://en.wikipedia.org/wiki/Crypt_(Unix)#Modular_crypt.283.29_Algorithms
Теоретически он поддерживает BCrypt напрямую (хотя я его не тестировал). Я тестировал SHA-512 с префиксом 6 долларов.
Таким образом, установка пароля, рассчитанного ниже, дает желаемый результат:
salt = 'fGn9LR75';
puts 'quohjo5oor4ac3Deolei'.crypt('$6$' + salt);
=>
"$6$fGn9LR75$juRSrMtKBa8pdZ8tbTouUvDItoF9Fp.LVk8Kqv2ZL5T.R.q/nUQNGePve1Ge/8rDf/xqUwgpY.3F1MQ0qtauf0"
Для будущих искателей обратите внимание, что поддержка bcrypt была добавлена в Apache в версии 2.4.4, выпущенной в феврале 2013 года.
$ htpasswd -nbB -C 11 имя пользователя пароль имя пользователя: $ 2y $ 11 $ p1icdLB / EqI2z2EPt6JrQOUdy1GzHg5GdDWcwdj3MIXJLSkgrILoa