nginx 的 ngx_http_auth_basic_module 模块,校验密码一般是通过 apr1 算法( MD5 迭代 1000 )实现的吧,不安全。
我们自己 web 服务校验是使用 pbkdf大带宽服务器2 算法,但是使用的某些开源组件需要走 nginx 进行 basic 认证。
想问下有没有现成的插件实现了更安全的算法,还是有其他更好的方案做密码校验?
htpasswd
htpasswd 有 bcryte 算法,但是 ngx_http_auth_basic_module 不支持
直接调用 libc.so 的
libc.so 支持就行
怎么可能不支持?
http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html
The following password types are supported:
encrypted with the crypt() function; can be generated using the “htpasswd” utility from the Apache HTTP Server distribution or the “openssl passwd” command;
hashed with the Apache variant of the MD5-based password algorithm (apr1); can be generated with the same tools;
specified by the “{scheme}data” syntax (1.0.3+) as described in RFC 2307; currently implemented schemes include PLAIN (an example one, should not be used), SHA (1.3.13) (plain SHA-1 hashing, should not be used) and SSHA (salted SHA-1 hashing, used by some software packages, notably OpenLDAP and Dovecot).
不是有 PAM 模块
不支持咯,https://github.com/nginx/nginx/blob/master/src/core/ngx_crypt.c
用 openresty,你想用什么加密方式都可以。。
你看下代码,最后的 fallback:
/* fallback to libc crypt() */
return ngx_libc_crypt(pool, key, salt, encrypted);
libc crypt()支持的都可以,至于你提到的 pbkdf2 我不清楚。