Apache HTTPD 또는 APR을 위한 PBKDF2(또는 BCrypt) 해시 구현

Apache HTTPD 또는 APR을 위한 PBKDF2(또는 BCrypt) 해시 구현

Apache HTTPD 내에서 PBKDF2 또는 BCrypt를 비밀번호 해시로 사용하는 (간단한) 방법을 아는 사람이 있습니까?

일반적인 시나리오는 /private에 특정 사용자 그룹으로 제한하고 싶은 리소스가 있다는 것입니다. 해당 사용자는 데이터베이스에 비밀번호가 저장되고 mod_auth_dbd.

나는좋다SSHA 사용에서 벗어나기 위해.

Apache apr-util에서 함수 apr_password_validate(현재 눈살을 찌푸리는 해시 유형을 모두 처리하는)가 있음을 볼 수 있습니다. apr_crypto_openssl.c에는 crypto_passphrasePBKDF2 구현이 있습니다 .

둘을 하나로 용접한 사람이 있나요? (아니면 Apache 문서 어딘가에서 분명한 내용을 놓친 걸까요?)

답변1

그래서 좀 더 검토해보니 모든 것이 제가 상상했던 것보다 훨씬 간단했던 것 같습니다.

HTTPD는 시스템에서 제공하는 암호화 기능을 사용하므로 모듈성을 활용합니다.

http://en.wikipedia.org/wiki/Crypt_(Unix)#Modular_crypt.283.29_Algorithms

이론적으로는 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월에 출시된 버전 2.4.4의 Apache에 추가되었습니다.

$ htpasswd -nbB -C 11 사용자 이름 비밀번호 사용자 이름:$2y$11$p1icdLB/EqI2z2EPt6JrQOUdy1GzHg5GdDWcwdj3MIXJLSkgrILoa

관련 정보